From 804a837775f5f3527546de92f57f57fc5be5bdf2 Mon Sep 17 00:00:00 2001 From: Andriy Skulysh Date: Tue, 21 Apr 2020 13:13:15 +0300 Subject: [PATCH] LU-13988 mdt: ASSERTION(!lustre_handle_is_used(&lh->mlh_reg_lh)) failed mdt_brw_enqueue() should clear lock handle on error. HPE-bug-id: LUS-8740 Change-Id: Ic2201189af6bcb2b1a114a599e138f9c22f3d99d Signed-off-by: Andriy Skulysh Reviewed-by: Alexandr Boyko Reviewed-by: Alexander Zarochentsev Reviewed-on: https://review.whamcloud.com/40045 Reviewed-by: Alexander Boyko Reviewed-by: Alexander Zarochentsev Tested-by: jenkins Tested-by: Maloo Reviewed-by: Oleg Drokin --- lustre/mdt/mdt_io.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lustre/mdt/mdt_io.c b/lustre/mdt/mdt_io.c index 3714ab7..2c0f9a5 100644 --- a/lustre/mdt/mdt_io.c +++ b/lustre/mdt/mdt_io.c @@ -1195,8 +1195,6 @@ int mdt_brw_enqueue(struct mdt_thread_info *mti, struct ldlm_namespace *ns, ENTRY; - /* Get lock from request for possible resent case. */ - mdt_intent_fixup_resent(mti, *lockp, lhc, flags); req_capsule_set_size(mti->mti_pill, &RMF_MDT_MD, RCL_SERVER, 0); req_capsule_set_size(mti->mti_pill, &RMF_ACL, RCL_SERVER, 0); rc = req_capsule_server_pack(mti->mti_pill); @@ -1222,6 +1220,8 @@ int mdt_brw_enqueue(struct mdt_thread_info *mti, struct ldlm_namespace *ns, if (mdt_object_remote(mo)) GOTO(out, rc = -EPROTO); + /* Get lock from request for possible resent case. */ + mdt_intent_fixup_resent(mti, *lockp, lhc, flags); /* resent case */ if (!lustre_handle_is_used(&lhc->mlh_reg_lh)) { mdt_lock_handle_init(lhc); @@ -1257,6 +1257,8 @@ out_fail: rc = mdt_intent_lock_replace(mti, lockp, lhc, flags, rc); out: + if (rc < 0) + lhc->mlh_reg_lh.cookie = 0ull; mdt_object_put(mti->mti_env, mo); RETURN(rc); } -- 1.8.3.1