Whamcloud - gitweb
- replace MDT_FAIL_* with OBD_FAIL_*
[fs/lustre-release.git] / lustre / mdt / mdt_reint.c
index ec8298e..8a0a9f0 100644 (file)
@@ -294,6 +294,9 @@ static int mdt_reint_setattr(struct mdt_thread_info *info,
         DEBUG_REQ(D_INODE, req, "setattr "DFID" %x", PFID(rr->rr_fid1),
                   (unsigned int)ma->ma_attr.la_valid);
 
+        if (info->mti_dlm_req)
+                ldlm_request_cancel(req, info->mti_dlm_req, 0);
+        
         repbody = req_capsule_server_get(&info->mti_pill, &RMF_MDT_BODY);
         mo = mdt_object_find(info->mti_env, info->mti_mdt, rr->rr_fid1);
         if (IS_ERR(mo))
@@ -350,16 +353,7 @@ static int mdt_reint_setattr(struct mdt_thread_info *info,
                                         info->mti_epoch->handle.cookie);
                         GOTO(out_put, rc = -ESTALE);
                 }
-                if (mfd->mfd_mode != FMODE_SOM) {
-                        CWARN("mfd_mode %d not right should be in replay\n", 
-                               mfd->mfd_mode);
-                        LASSERT(lustre_msg_get_flags(req->rq_reqmsg) & 
-                                MSG_REPLAY);
-                        LASSERT(mfd->mfd_mode == FMODE_EPOCH);
-                        mfd->mfd_mode = FMODE_SOM;
-                }
-                
-                LASSERT(ma->ma_attr.la_valid & LA_SIZE);
+                LASSERT(mfd->mfd_mode == FMODE_SOM);
                 LASSERT(!(info->mti_epoch->flags & MF_EPOCH_CLOSE));
 
                 class_handle_unhash(&mfd->mfd_handle);
@@ -405,9 +399,12 @@ static int mdt_reint_create(struct mdt_thread_info *info,
         int rc;
         ENTRY;
 
-        if (MDT_FAIL_CHECK(OBD_FAIL_MDS_REINT_CREATE))
+        if (OBD_FAIL_CHECK(OBD_FAIL_MDS_REINT_CREATE))
                 GOTO(out, rc = err_serious(-ESTALE));
 
+        if (info->mti_dlm_req)
+                ldlm_request_cancel(mdt_info_req(info), info->mti_dlm_req, 0);
+
         switch (info->mti_attr.ma_attr.la_mode & S_IFMT) {
         case S_IFDIR:{
                 /* Cross-ref case. */
@@ -453,7 +450,10 @@ static int mdt_reint_unlink(struct mdt_thread_info *info,
         DEBUG_REQ(D_INODE, req, "unlink "DFID"/%s", PFID(rr->rr_fid1),
                   rr->rr_name);
 
-        if (MDT_FAIL_CHECK(OBD_FAIL_MDS_REINT_UNLINK))
+        if (info->mti_dlm_req)
+                ldlm_request_cancel(req, info->mti_dlm_req, 0);
+
+        if (OBD_FAIL_CHECK(OBD_FAIL_MDS_REINT_UNLINK))
                 GOTO(out, rc = err_serious(-ENOENT));
 
         /* step 1: lock the parent */
@@ -553,9 +553,12 @@ static int mdt_reint_link(struct mdt_thread_info *info,
         DEBUG_REQ(D_INODE, req, "link "DFID" to "DFID"/%s",
                   PFID(rr->rr_fid1), PFID(rr->rr_fid2), rr->rr_name);
 
-        if (MDT_FAIL_CHECK(OBD_FAIL_MDS_REINT_LINK))
+        if (OBD_FAIL_CHECK(OBD_FAIL_MDS_REINT_LINK))
                 GOTO(out, rc = err_serious(-ENOENT));
 
+        if (info->mti_dlm_req)
+                ldlm_request_cancel(req, info->mti_dlm_req, 0);
+
         if (info->mti_cross_ref) {
                 /* MDT holding name ask us to add ref. */
                 lhs = &info->mti_lh[MDT_LH_CHILD];
@@ -729,16 +732,16 @@ static int mdt_rename_lock(struct mdt_thread_info *info,
                                             ldlm_completion_ast, NULL, NULL, 0,
                                             NULL, lh);
         } else {
+                struct ldlm_enqueue_info einfo = { LDLM_IBITS, LCK_EX,
+                        ldlm_blocking_ast, ldlm_completion_ast, NULL, NULL };
                 int flags = 0;
 
                 /*
                  * This is the case mdt0 is remote node, issue DLM lock like
                  * other clients.
                  */
-                rc = ldlm_cli_enqueue(ls->ls_control_exp, NULL, res_id,
-                                      LDLM_IBITS, policy, LCK_EX, &flags,
-                                      ldlm_blocking_ast, ldlm_completion_ast,
-                                      NULL, NULL, NULL, 0, NULL, lh, 0);
+                rc = ldlm_cli_enqueue(ls->ls_control_exp, NULL, &einfo, res_id,
+                                      policy, &flags, NULL, 0, NULL, lh, 0);
         }
 
         RETURN(rc);
@@ -813,6 +816,9 @@ static int mdt_reint_rename(struct mdt_thread_info *info,
         int                      rc;
         ENTRY;
 
+        if (info->mti_dlm_req)
+                ldlm_request_cancel(mdt_info_req(info), info->mti_dlm_req, 0);
+
         if (info->mti_cross_ref) {
                 rc = mdt_reint_rename_tgt(info);
                 RETURN(rc);