From: Bobi Jam Date: Wed, 12 May 2021 08:18:00 +0000 (+0800) Subject: LU-14648 lod: protect lod_object layout info X-Git-Tag: 2.14.53~64 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=25aa8527374f8120c113dc12adb1366a1ab98152 LU-14648 lod: protect lod_object layout info Need to protect lod_object's layout access with ldo_layout_mutex. Signed-off-by: Bobi Jam Change-Id: I2c4a2078bdce64d15485d3ff18f6670d42ca90ba Reviewed-on: https://review.whamcloud.com/43671 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Alex Zhuravlev Reviewed-by: John L. Hammond Reviewed-by: Oleg Drokin --- diff --git a/lustre/lod/lod_internal.h b/lustre/lod/lod_internal.h index 53664b9..2d7875c 100644 --- a/lustre/lod/lod_internal.h +++ b/lustre/lod/lod_internal.h @@ -484,23 +484,29 @@ static inline bool lod_obj_is_striped(struct dt_object *dt) { struct lod_object *lo = lod_dt_obj(dt); int i; + bool rc = false; if (!dt_object_exists(dt_object_child(dt))) return false; - if (S_ISDIR(dt->do_lu.lo_header->loh_attr)) - return lo->ldo_dir_stripe_count != 0; - - if (lo->ldo_is_foreign) - return false; - - for (i = 0; i < lo->ldo_comp_cnt; i++) { - if (lo->ldo_comp_entries[i].llc_stripe == NULL) - continue; - LASSERT(lo->ldo_comp_entries[i].llc_stripe_count > 0); - return true; + mutex_lock(&lo->ldo_layout_mutex); + + if (S_ISDIR(dt->do_lu.lo_header->loh_attr)) { + rc = lo->ldo_dir_stripe_count != 0; + } else if (lo->ldo_is_foreign) { + rc = false; + } else { + for (i = 0; i < lo->ldo_comp_cnt; i++) { + if (lo->ldo_comp_entries[i].llc_stripe == NULL) + continue; + LASSERT(lo->ldo_comp_entries[i].llc_stripe_count > 0); + rc = true; + break; + } } - return false; + + mutex_unlock(&lo->ldo_layout_mutex); + return rc; } extern struct lu_context_key lod_thread_key;