Whamcloud - gitweb
LU-13988 mdt: ASSERTION(!lustre_handle_is_used(&lh->mlh_reg_lh)) failed 45/40045/3
authorAndriy Skulysh <c17819@cray.com>
Tue, 21 Apr 2020 10:13:15 +0000 (13:13 +0300)
committerOleg Drokin <green@whamcloud.com>
Thu, 19 Nov 2020 10:19:32 +0000 (10:19 +0000)
mdt_brw_enqueue() should clear lock handle on error.

HPE-bug-id: LUS-8740
Change-Id: Ic2201189af6bcb2b1a114a599e138f9c22f3d99d
Signed-off-by: Andriy Skulysh <c17819@cray.com>
Reviewed-by: Alexandr Boyko <c17825@cray.com>
Reviewed-by: Alexander Zarochentsev <c17826@cray.com>
Reviewed-on: https://review.whamcloud.com/40045
Reviewed-by: Alexander Boyko <alexander.boyko@hpe.com>
Reviewed-by: Alexander Zarochentsev <alexander.zarochentsev@hpe.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/mdt/mdt_io.c

index 3714ab7..2c0f9a5 100644 (file)
@@ -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);
 }