Whamcloud - gitweb
Branch: b_new_cmd
authorwangdi <wangdi>
Thu, 3 Aug 2006 09:56:27 +0000 (09:56 +0000)
committerwangdi <wangdi>
Thu, 3 Aug 2006 09:56:27 +0000 (09:56 +0000)
some req should pack the reply after set md size.

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

index 0247dc0..14dc233 100644 (file)
@@ -1038,9 +1038,6 @@ int mdc_get_info(struct obd_export *exp, __u32 keylen, void *key,
 
                 if (*vallen != sizeof(int))
                         RETURN(-EINVAL);
-                /*FIXME: Huanghua will fix this soon. set fixed size
-                 * temporarily*/
-                *(int*)val = MAX_MD_SIZE;
                 mdsize = *(int*)val;
                 if (mdsize > exp->exp_obd->u.cli.cl_max_mds_easize)
                         exp->exp_obd->u.cli.cl_max_mds_easize = mdsize;
index 8f2dd34..a4bf12c 100644 (file)
@@ -657,10 +657,9 @@ static int mdt_reint(struct mdt_thread_info *info)
         opc = mdt_reint_opcode(info, reint_fmts);
         if (opc >= 0) {
                 OBD_FAIL_RETURN(OBD_FAIL_MDS_REINT_NET, 0);
-                
-                rc = req_capsule_pack(&info->mti_pill);
-                if (rc == 0)
-                        rc = mdt_reint_internal(info, opc);
+
+                rc = mdt_reint_internal(info, opc);
+        
         } else
                 rc = opc;
         RETURN(rc);
@@ -1603,14 +1602,13 @@ static int mdt_intent_reint(enum mdt_it_code opcode,
                 RETURN(-EPROTO);
         }
 
-        rc = req_capsule_pack(&info->mti_pill);
-        if (rc)
-                RETURN(rc);
-
+        rc = mdt_reint_internal(info, opc);
+        
         rep = req_capsule_server_get(&info->mti_pill, &RMF_DLM_REP);
         if (rep == NULL)
                 RETURN(-EFAULT);
-        rep->lock_policy_res2 = mdt_reint_internal(info, opc);
+        rep->lock_policy_res2 = rc;
+        
         intent_set_disposition(rep, DISP_IT_EXECD);
 
         mdt_update_last_transno(info, rep->lock_policy_res2);
index 0af5147..fb75935 100644 (file)
@@ -263,6 +263,12 @@ int mdt_reint_open(struct mdt_thread_info *info)
         struct mdt_reint_record *rr = &info->mti_rr;
         ENTRY;
 
+        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 = req_capsule_get_size(&info->mti_pill,
index d26a9a0..f1a1463 100644 (file)
@@ -131,6 +131,10 @@ static int mdt_reint_setattr(struct mdt_thread_info *info)
         DEBUG_REQ(D_INODE, req, "setattr "DFID3" %x", PFID3(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;
@@ -192,7 +196,11 @@ static int mdt_reint_create(struct mdt_thread_info *info)
 {
         int rc;
         ENTRY;
-
+       
+        rc = req_capsule_pack(&info->mti_pill);
+        if (rc)
+                RETURN(rc);
+        
         switch (info->mti_attr.ma_attr.la_mode & S_IFMT) {
         case S_IFREG:
         case S_IFDIR:{
@@ -235,6 +243,14 @@ static int mdt_reint_unlink(struct mdt_thread_info *info)
 
         DEBUG_REQ(D_INODE, req, "unlink "DFID3"/%s\n", PFID3(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);
 
         /* MDS_CHECK_RESENT here */
 
@@ -266,6 +282,8 @@ static int mdt_reint_unlink(struct mdt_thread_info *info)
 
         /*step 3:  do some checking ...*/
 
+        
+
         /* step 4: delete it */
         /* cmm will take care if child is local or remote */
         ma->ma_lmm = req_capsule_server_get(&info->mti_pill, &RMF_MDT_MD);
@@ -313,6 +331,9 @@ static int mdt_reint_link(struct mdt_thread_info *info)
 
         /* MDS_CHECK_RESENT here */
 
+        rc = req_capsule_pack(&info->mti_pill);
+        if (rc)
+                RETURN(rc);
         /* step 1: lock the source */
         lhs = &info->mti_lh[MDT_LH_PARENT];
         lhs->mlh_mode = LCK_EX;
@@ -438,6 +459,10 @@ static int mdt_reint_rename(struct mdt_thread_info *info)
                 RETURN(mdt_reint_rename_tgt(info));
         }
 
+        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 */