From: Lai Siyao Date: Mon, 27 Aug 2018 20:55:56 +0000 (+0800) Subject: LU-11301 target: add lock in sub_trans_stop_cb() X-Git-Tag: 2.11.56~64 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=refs%2Fchanges%2F69%2F33169%2F2;p=fs%2Flustre-release.git LU-11301 target: add lock in sub_trans_stop_cb() sub_trans st_committed and st_stopped flags take different bit of the same memory address, so both of them should be set with lock, but sub_trans_stop_cb() doesn't, which may cause it overriden. Signed-off-by: Lai Siyao Change-Id: Ic3d7d7281b3cf9bd20702be944e14f35200318f1 Reviewed-on: https://review.whamcloud.com/33169 Reviewed-by: Alex Zhuravlev Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Oleg Drokin --- diff --git a/lustre/target/update_trans.c b/lustre/target/update_trans.c index f9dc367..154da72 100644 --- a/lustre/target/update_trans.c +++ b/lustre/target/update_trans.c @@ -526,6 +526,7 @@ static void sub_trans_stop_cb(struct lu_env *env, struct top_multiple_thandle *tmt = cb->dcb_data; ENTRY; + spin_lock(&tmt->tmt_sub_lock); list_for_each_entry(st, &tmt->tmt_sub_thandle_list, st_sub_list) { if (st->st_stopped) continue; @@ -536,6 +537,7 @@ static void sub_trans_stop_cb(struct lu_env *env, break; } } + spin_unlock(&tmt->tmt_sub_lock); wake_up(&tmt->tmt_stop_waitq); RETURN_EXIT;