Whamcloud - gitweb
pack reply message for reint operations with generic code:
authorhuanghua <huanghua>
Wed, 30 Aug 2006 15:50:55 +0000 (15:50 +0000)
committerhuanghua <huanghua>
Wed, 30 Aug 2006 15:50:55 +0000 (15:50 +0000)
we check the reply format to see if there are RMF_MDT_MD and RMF_LOGCOOKIES,
     and set size for them.

lustre/mdt/mdt_handler.c
lustre/mdt/mdt_open.c
lustre/mdt/mdt_reint.c

index 6a4554c..8471d0a 100644 (file)
@@ -638,29 +638,42 @@ free_rdpg:
 
 static int mdt_reint_internal(struct mdt_thread_info *info, __u32 op)
 {
-        int rc;
+        struct req_capsule      *pill = &info->mti_pill;
+        struct mdt_device       *mdt = info->mti_mdt;
+        struct ptlrpc_request   *req = mdt_info_req(info);
+        int                      rc;
         ENTRY;
 
         if (MDT_FAIL_CHECK(OBD_FAIL_MDS_REINT_UNPACK))
                 RETURN(-EFAULT);
 
         rc = mdt_reint_unpack(info, op);
-        if (rc == 0) {
-                struct ptlrpc_request *req = mdt_info_req(info);
-                if (lustre_msg_get_flags(req->rq_reqmsg) & MSG_RESENT) {
-                        struct mdt_client_data *mcd;
+        if (rc != 0) 
+                RETURN(rc);
+                
+        /*pack reply*/
+        if (req_capsule_has_field(pill, &RMF_MDT_MD, RCL_SERVER))
+                req_capsule_set_size(pill, &RMF_MDT_MD, RCL_SERVER,
+                                     mdt->mdt_max_mdsize);
+        if (req_capsule_has_field(pill, &RMF_LOGCOOKIES, RCL_SERVER))
+                req_capsule_set_size(pill, &RMF_LOGCOOKIES, RCL_SERVER,
+                                     mdt->mdt_max_cookiesize);
+        rc = req_capsule_pack(pill);
+        if (rc != 0)
+                RETURN(rc);
+
+        if (lustre_msg_get_flags(req->rq_reqmsg) & MSG_RESENT) {
+                struct mdt_client_data *mcd;
                         
-                        mcd = req->rq_export->exp_mdt_data.med_mcd;
-                        if (mcd->mcd_last_xid == req->rq_xid) {
-                                mdt_reconstruct(info);
-                                RETURN(lustre_msg_get_status(req->rq_repmsg));
-                        } 
-                        DEBUG_REQ(D_HA, req,
-                                  "no reply for RESENT (xid "LPD64")",
-                                  mcd->mcd_last_xid);
-                }
-                rc = mdt_reint_rec(info);
-        }
+                mcd = req->rq_export->exp_mdt_data.med_mcd;
+                if (mcd->mcd_last_xid == req->rq_xid) {
+                        mdt_reconstruct(info);
+                        RETURN(lustre_msg_get_status(req->rq_repmsg));
+                } 
+                DEBUG_REQ(D_HA, req, "no reply for RESENT (xid "LPD64")",
+                                     mcd->mcd_last_xid);
+        }
+        rc = mdt_reint_rec(info);
 
         RETURN(rc);
 }
index ef8f804..bdf652d 100644 (file)
@@ -423,13 +423,6 @@ int mdt_open(struct mdt_thread_info *info)
         OBD_FAIL_TIMEOUT(OBD_FAIL_MDS_PAUSE_OPEN | OBD_FAIL_ONCE,
                          (obd_timeout + 1) / 4);
 
-        req_capsule_set_size(&info->mti_pill, &RMF_MDT_MD, RCL_SERVER,
-                             mdt->mdt_max_mdsize);
-
-        result = req_capsule_pack(&info->mti_pill);
-        if (result)
-                RETURN(result);
-
         ma->ma_lmm = req_capsule_server_get(&info->mti_pill, &RMF_MDT_MD);
         ma->ma_lmm_size = mdt->mdt_max_mdsize;
         ma->ma_need = MA_INODE | MA_LOV;
index 2140878..23776e3 100644 (file)
@@ -137,11 +137,6 @@ static int mdt_reint_setattr(struct mdt_thread_info *info)
         DEBUG_REQ(D_INODE, req, "setattr "DFID" %x", PFID(rr->rr_fid1),
                   (unsigned int)attr->la_valid);
 
-        /*pack the reply*/
-        rc = req_capsule_pack(&info->mti_pill);
-        if (rc)
-                RETURN(rc);
-        /* MDS_CHECK_RESENT */
         lh = &info->mti_lh[MDT_LH_PARENT];
         lh->mlh_mode = LCK_EX;
 
@@ -198,10 +193,6 @@ static int mdt_reint_create(struct mdt_thread_info *info)
         int rc;
         ENTRY;
 
-        rc = req_capsule_pack(&info->mti_pill);
-        if (rc)
-                RETURN(rc);
-        
         if (MDT_FAIL_CHECK(OBD_FAIL_MDS_REINT_CREATE))
                 RETURN(-ESTALE);
 
@@ -245,14 +236,6 @@ static int mdt_reint_unlink(struct mdt_thread_info *info)
 
         DEBUG_REQ(D_INODE, req, "unlink "DFID"/%s\n", PFID(rr->rr_fid1),
                   rr->rr_name);
-        /*pack the reply*/
-        req_capsule_set_size(&info->mti_pill, &RMF_MDT_MD, RCL_SERVER,
-                             info->mti_mdt->mdt_max_mdsize);
-        req_capsule_set_size(&info->mti_pill, &RMF_LOGCOOKIES, RCL_SERVER,
-                             info->mti_mdt->mdt_max_cookiesize);
-        rc = req_capsule_pack(&info->mti_pill);
-        if (rc)
-                RETURN(rc);
 
         if (MDT_FAIL_CHECK(OBD_FAIL_MDS_REINT_UNLINK))
                 RETURN(-ENOENT);
@@ -337,10 +320,6 @@ static int mdt_reint_link(struct mdt_thread_info *info)
         DEBUG_REQ(D_INODE, req, "link original "DFID" to "DFID" %s",
                   PFID(rr->rr_fid1), PFID(rr->rr_fid2), rr->rr_name);
 
-        rc = req_capsule_pack(&info->mti_pill);
-        if (rc)
-                RETURN(rc);
-
         if (MDT_FAIL_CHECK(OBD_FAIL_MDS_REINT_LINK))
                 RETURN(-ENOENT);
 
@@ -468,23 +447,12 @@ static int mdt_reint_rename(struct mdt_thread_info *info)
                   PFID(rr->rr_fid1), rr->rr_name,
                   PFID(rr->rr_fid2), rr->rr_tgt);
 
-        /* MDS_CHECK_RESENT here */
-
         rc = req_capsule_get_size(pill, &RMF_NAME, RCL_CLIENT);
         if (rc == 1) {
         /* if (rr->rr_name[0] == 0) {*/
                 RETURN(mdt_reint_rename_tgt(info));
         }
 
-        /*pack reply*/
-        req_capsule_set_size(&info->mti_pill, &RMF_MDT_MD, RCL_SERVER,
-                             info->mti_mdt->mdt_max_mdsize);
-        req_capsule_set_size(&info->mti_pill, &RMF_LOGCOOKIES, RCL_SERVER,
-                             info->mti_mdt->mdt_max_cookiesize);
-        rc = req_capsule_pack(&info->mti_pill);
-        if (rc)
-                RETURN(rc);
-
         lh_newp = &info->mti_lh[MDT_LH_NEW];
 
         /* step 1: lock the source dir */