Whamcloud - gitweb
initialize the body->eadatalen and body->acllen by generic code.
authorhuanghua <huanghua>
Tue, 17 Oct 2006 08:32:51 +0000 (08:32 +0000)
committerhuanghua <huanghua>
Tue, 17 Oct 2006 08:32:51 +0000 (08:32 +0000)
lustre/mdt/mdt_handler.c
lustre/mdt/mdt_open.c

index e57d7b5..dd54958 100644 (file)
@@ -158,7 +158,7 @@ static int mdt_getstatus(struct mdt_thread_info *info)
 {
         struct mdt_device *mdt  = info->mti_mdt;
         struct md_device  *next = mdt->mdt_child;
-        struct mdt_body   *body;
+        struct mdt_body   *repbody;
         int                rc;
 
         ENTRY;
@@ -166,18 +166,18 @@ static int mdt_getstatus(struct mdt_thread_info *info)
         if (MDT_FAIL_CHECK(OBD_FAIL_MDS_GETSTATUS_PACK))
                 RETURN(err_serious(-ENOMEM));
 
-        body = req_capsule_server_get(&info->mti_pill, &RMF_MDT_BODY);
-        rc = next->md_ops->mdo_root_get(info->mti_env, next, &body->fid1);
+        repbody = req_capsule_server_get(&info->mti_pill, &RMF_MDT_BODY);
+        rc = next->md_ops->mdo_root_get(info->mti_env, next, &repbody->fid1);
         if (rc != 0)
                 RETURN(rc);
 
-        body->valid |= OBD_MD_FLID;
+        repbody->valid |= OBD_MD_FLID;
 
         if (mdt->mdt_opts.mo_mds_capa) {
                 struct mdt_object  *root;
                 struct lustre_capa *capa;
 
-                root = mdt_object_find(info->mti_env, mdt, &body->fid1);
+                root = mdt_object_find(info->mti_env, mdt, &repbody->fid1);
                 if (IS_ERR(root))
                         RETURN(PTR_ERR(root));
 
@@ -189,7 +189,7 @@ static int mdt_getstatus(struct mdt_thread_info *info)
                                  0);
                 mdt_object_put(info->mti_env, root);
                 if (rc == 0)
-                        body->valid |= OBD_MD_FLMDSCAPA;
+                        repbody->valid |= OBD_MD_FLMDSCAPA;
         }
 
         RETURN(rc);
@@ -294,8 +294,6 @@ static int mdt_getattr_internal(struct mdt_thread_info *info,
                 RETURN(err_serious(-ENOMEM));
 
         repbody = req_capsule_server_get(pill, &RMF_MDT_BODY);
-        repbody->eadatasize = 0;
-        repbody->aclsize = 0;
 
         if (reqbody->valid & OBD_MD_MEA) {
                 /* Assumption: MDT_MD size is enough for lmv size FIXME */
@@ -460,12 +458,16 @@ static int mdt_getattr(struct mdt_thread_info *info)
 {
         struct mdt_object *obj = info->mti_object;
         struct mdt_body   *reqbody;
+        struct mdt_body   *repbody;
         int rc;
         ENTRY;
 
         reqbody = req_capsule_client_get(&info->mti_pill, &RMF_MDT_BODY);
-        if (reqbody == NULL)
-                GOTO(out, rc = -EFAULT);
+        LASSERT(reqbody);
+        repbody = req_capsule_server_get(&info->mti_pill, &RMF_MDT_BODY);
+        LASSERT(repbody);
+        repbody->eadatasize = 0;
+        repbody->aclsize = 0;
 
         if (reqbody->valid & OBD_MD_FLOSSCAPA) {
                 rc = mdt_renew_capa(info);
@@ -704,12 +706,16 @@ static int mdt_getattr_name(struct mdt_thread_info *info)
 {
         struct mdt_lock_handle *lhc = &info->mti_lh[MDT_LH_CHILD];
         struct mdt_body        *reqbody;
+        struct mdt_body        *repbody;
         int rc;
         ENTRY;
 
         reqbody = req_capsule_client_get(&info->mti_pill, &RMF_MDT_BODY);
-        if (reqbody == NULL)
-                GOTO(out, rc = err_serious(-EFAULT));
+        LASSERT(reqbody);
+        repbody = req_capsule_server_get(&info->mti_pill, &RMF_MDT_BODY);
+        LASSERT(repbody);
+        repbody->eadatasize = 0;
+        repbody->aclsize = 0;
 
         rc = mdt_init_ucred(info, reqbody);
         if (rc)
@@ -1030,6 +1036,7 @@ static int mdt_reint_internal(struct mdt_thread_info *info,
         struct req_capsule      *pill = &info->mti_pill;
         struct mdt_device       *mdt = info->mti_mdt;
         struct ptlrpc_request   *req = mdt_info_req(info);
+        struct mdt_body         *repbody;
         int                      rc;
         ENTRY;
 
@@ -1045,6 +1052,13 @@ static int mdt_reint_internal(struct mdt_thread_info *info,
                 CERROR("Can't pack response, rc %d\n", rc);
                 RETURN(err_serious(rc));
         }
+        
+        if (req_capsule_has_field(pill, &RMF_MDT_BODY, RCL_SERVER)) {
+                repbody = req_capsule_server_get(pill, &RMF_MDT_BODY);
+                LASSERT(repbody);
+                repbody->eadatasize = 0;
+                repbody->aclsize = 0;
+        }
 
         /*
          * Check this after packing response, because after we fail here without
@@ -1082,7 +1096,6 @@ static int mdt_reint_internal(struct mdt_thread_info *info,
                           mcd->mcd_last_xid);
         }
         rc = mdt_reint_rec(info, lhc);
-
 out:
         mdt_exit_ucred(info);
         RETURN(rc);
@@ -2212,10 +2225,17 @@ static int mdt_intent_getattr(enum mdt_it_code opcode,
         struct ldlm_reply      *ldlm_rep;
         struct ptlrpc_request  *req;
         struct mdt_body        *reqbody;
+        struct mdt_body        *repbody;
         int                     rc;
-
         ENTRY;
 
+        reqbody = req_capsule_client_get(&info->mti_pill, &RMF_MDT_BODY);
+        LASSERT(reqbody);
+        repbody = req_capsule_server_get(&info->mti_pill, &RMF_MDT_BODY);
+        LASSERT(repbody);
+        repbody->eadatasize = 0;
+        repbody->aclsize = 0;
+
         switch (opcode) {
         case MDT_IT_LOOKUP:
                 child_bits = MDS_INODELOCK_LOOKUP;
@@ -2228,10 +2248,6 @@ static int mdt_intent_getattr(enum mdt_it_code opcode,
                 GOTO(out, rc = -EINVAL);
         }
 
-        reqbody = req_capsule_client_get(&info->mti_pill, &RMF_MDT_BODY);
-        if (reqbody == NULL)
-                GOTO(out, rc = err_serious(-EFAULT));
-
         rc = mdt_init_ucred(info, reqbody);
         if (rc)
                 GOTO(out, rc);
index ebc3b0b..2aadf00 100644 (file)
@@ -509,10 +509,7 @@ void mdt_reconstruct_open(struct mdt_thread_info *info,
 
         LASSERT(pill->rc_fmt == &RQF_LDLM_INTENT_OPEN);
         ldlm_rep = req_capsule_server_get(&info->mti_pill, &RMF_DLM_REP);
-
         repbody = req_capsule_server_get(&info->mti_pill, &RMF_MDT_BODY);
-        repbody->eadatasize = 0;
-        repbody->aclsize = 0;
 
         ma->ma_lmm = req_capsule_server_get(&info->mti_pill, &RMF_MDT_MD);
         ma->ma_lmm_size = req_capsule_get_size(&info->mti_pill, &RMF_MDT_MD,
@@ -681,8 +678,6 @@ int mdt_reint_open(struct mdt_thread_info *info, struct mdt_lock_handle *lhc)
                          (obd_timeout + 1) / 4);
 
         repbody = req_capsule_server_get(&info->mti_pill, &RMF_MDT_BODY);
-        repbody->eadatasize = 0;
-        repbody->aclsize = 0;
 
         ma->ma_lmm = req_capsule_server_get(&info->mti_pill, &RMF_MDT_MD);
         ma->ma_lmm_size = req_capsule_get_size(&info->mti_pill, &RMF_MDT_MD,