From 9849f6110680d6846e05e9787f1821b0f86b5461 Mon Sep 17 00:00:00 2001 From: Niu Yawei Date: Thu, 11 Sep 2014 06:57:52 -0400 Subject: [PATCH] LU-5287 export: hold exp_lock when modify exp_flags There are few places that changing the exp_flags without holding exp_lock, that could overwrite other concurrent exp_flags updating. Signed-off-by: Niu Yawei Change-Id: I9c0421ffeacd6bf6feaa31dca9f9fc0e7963bc8b Reviewed-on: http://review.whamcloud.com/11871 Tested-by: Jenkins Reviewed-by: Fan Yong Reviewed-by: James Simmons Tested-by: Maloo Reviewed-by: Oleg Drokin --- lustre/ldlm/ldlm_lib.c | 2 ++ lustre/mdt/mdt_handler.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/lustre/ldlm/ldlm_lib.c b/lustre/ldlm/ldlm_lib.c index 0c878dc..0eb34d7 100644 --- a/lustre/ldlm/ldlm_lib.c +++ b/lustre/ldlm/ldlm_lib.c @@ -1068,8 +1068,10 @@ dont_check_exports: * OBD_CONNECT_MNE_SWAB flag around forever, just so long as we need * interop with unpatched 2.2 clients. For newer clients, servers * will never do MNE swabbing, let the client handle that. LU-1644 */ + spin_lock(&export->exp_lock); export->exp_need_mne_swab = !ptlrpc_req_need_swab(req) && !(data->ocd_connect_flags & OBD_CONNECT_MNE_SWAB); + spin_unlock(&export->exp_lock); #endif LASSERT(target->u.obt.obt_magic == OBT_MAGIC); diff --git a/lustre/mdt/mdt_handler.c b/lustre/mdt/mdt_handler.c index 569ecf6..f244e61 100644 --- a/lustre/mdt/mdt_handler.c +++ b/lustre/mdt/mdt_handler.c @@ -5046,7 +5046,9 @@ static int mdt_obd_connect(const struct lu_env *env, mdt_export_stats_init(obd, lexp, localdata); /* For phase I, sync for cross-ref operation. */ + spin_lock(&lexp->exp_lock); lexp->exp_keep_sync = 1; + spin_unlock(&lexp->exp_lock); } if (rc != 0) { -- 1.8.3.1