From 6b598dbd29701e0b6986832158f5b3284105256c Mon Sep 17 00:00:00 2001 From: huanghua Date: Tue, 17 Oct 2006 08:32:51 +0000 Subject: [PATCH] initialize the body->eadatalen and body->acllen by generic code. --- lustre/mdt/mdt_handler.c | 52 +++++++++++++++++++++++++++++++----------------- lustre/mdt/mdt_open.c | 5 ----- 2 files changed, 34 insertions(+), 23 deletions(-) diff --git a/lustre/mdt/mdt_handler.c b/lustre/mdt/mdt_handler.c index e57d7b5..dd54958 100644 --- a/lustre/mdt/mdt_handler.c +++ b/lustre/mdt/mdt_handler.c @@ -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); diff --git a/lustre/mdt/mdt_open.c b/lustre/mdt/mdt_open.c index ebc3b0b..2aadf00 100644 --- a/lustre/mdt/mdt_open.c +++ b/lustre/mdt/mdt_open.c @@ -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, -- 1.8.3.1