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);
}
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;
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;
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);
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);
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);
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 */