From: huanghua Date: Wed, 30 Aug 2006 15:50:55 +0000 (+0000) Subject: pack reply message for reint operations with generic code: X-Git-Tag: v1_8_0_110~486^2~1058 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=4d6bde62f78042cbc5d8f205dfaa845b5b70dcc5;p=fs%2Flustre-release.git pack reply message for reint operations with generic code: we check the reply format to see if there are RMF_MDT_MD and RMF_LOGCOOKIES, and set size for them. --- diff --git a/lustre/mdt/mdt_handler.c b/lustre/mdt/mdt_handler.c index 6a4554c..8471d0a 100644 --- a/lustre/mdt/mdt_handler.c +++ b/lustre/mdt/mdt_handler.c @@ -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); } diff --git a/lustre/mdt/mdt_open.c b/lustre/mdt/mdt_open.c index ef8f804..bdf652d 100644 --- a/lustre/mdt/mdt_open.c +++ b/lustre/mdt/mdt_open.c @@ -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; diff --git a/lustre/mdt/mdt_reint.c b/lustre/mdt/mdt_reint.c index 2140878..23776e3 100644 --- a/lustre/mdt/mdt_reint.c +++ b/lustre/mdt/mdt_reint.c @@ -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 */