return de;
}
-static int lookup_it_finish(struct ptlrpc_request *request, int offset,
- struct lookup_intent *it, void *data)
+static int lookup_it_finish(struct ptlrpc_request *request,
+ struct lookup_intent *it,
+ void *data)
{
struct it_cb_data *icbd = data;
struct dentry **de = icbd->icbd_childp;
if (!it_disposition(it, DISP_LOOKUP_NEG)) {
ENTRY;
- rc = ll_prep_inode(&inode, request, offset,
- (*de)->d_sb);
+ rc = ll_prep_inode(&inode, request, (*de)->d_sb);
if (rc)
RETURN(rc);
if (rc < 0)
GOTO(out, retval = ERR_PTR(rc));
- rc = lookup_it_finish(req, DLM_REPLY_REC_OFF, it, &icbd);
+ rc = lookup_it_finish(req, it, &icbd);
if (rc != 0) {
ll_intent_release(it);
GOTO(out, retval = ERR_PTR(rc));
LASSERT(it_disposition(it, DISP_ENQ_CREATE_REF));
request = it->d.lustre.it_data;
it_clear_disposition(it, DISP_ENQ_CREATE_REF);
- rc = ll_prep_inode(&inode, request, DLM_REPLY_REC_OFF, dir->i_sb);
+ rc = ll_prep_inode(&inode, request, dir->i_sb);
if (rc)
GOTO(out, inode = ERR_PTR(rc));
RETURN(0);
}
-static void ll_update_times(struct ptlrpc_request *request, int offset,
+static void ll_update_times(struct ptlrpc_request *request,
struct inode *inode)
{
- struct mdt_body *body = lustre_msg_buf(request->rq_repmsg, offset,
- sizeof(*body));
- LASSERT(body);
+ struct mdt_body *body = req_capsule_server_get(&request->rq_pill,
+ &RMF_MDT_BODY);
+ LASSERT(body);
/* mtime is always updated with ctime, but can be set in past.
As write and utime(2) may happen within 1 second, and utime's
mtime has a priority over write's one, so take mtime from mds
if (err)
GOTO(err_exit, err);
- ll_update_times(request, REPLY_REC_OFF, dir);
+ ll_update_times(request, dir);
if (dchild) {
- err = ll_prep_inode(&inode, request, REPLY_REC_OFF,
- dchild->d_sb);
+ err = ll_prep_inode(&inode, request, dchild->d_sb);
if (err)
GOTO(err_exit, err);
if (dchild)
d_drop(dchild);
- ll_update_times(request, REPLY_REC_OFF, dir);
+ ll_update_times(request, dir);
EXIT;
out:
ptlrpc_req_finished(request);
rc = md_unlink(ll_i2sbi(dir)->ll_md_exp, op_data, &request);
ll_finish_md_op_data(op_data);
if (rc == 0)
- ll_update_times(request, REPLY_REC_OFF, dir);
+ ll_update_times(request, dir);
ptlrpc_req_finished(request);
RETURN(rc);
}
ENTRY;
/* req is swabbed so this is safe */
- body = lustre_msg_buf(request->rq_repmsg, REPLY_REC_OFF, sizeof(*body));
-
+ body = req_capsule_server_get(&request->rq_pill, &RMF_MDT_BODY);
if (!(body->valid & OBD_MD_FLEASIZE))
RETURN(0);
* to this file. Use this EA to unlink the objects on the OST.
* It's opaque so we don't swab here; we leave it to obd_unpackmd() to
* check it is complete and sensible. */
- eadata = lustre_swab_repbuf(request, REPLY_REC_OFF + 1,
- body->eadatasize, NULL);
+ eadata = req_capsule_server_sized_get(&request->rq_pill, &RMF_MDT_MD,
+ body->eadatasize);
LASSERT(eadata != NULL);
- if (eadata == NULL) {
- CERROR("Can't unpack MDS EA data\n");
- GOTO(out, rc = -EPROTO);
- }
rc = obd_unpackmd(ll_i2dtexp(dir), &lsm, eadata, body->eadatasize);
if (rc < 0) {
if (body->valid & OBD_MD_FLCOOKIE) {
oa->o_valid |= OBD_MD_FLCOOKIE;
- oti.oti_logcookies =
- lustre_msg_buf(request->rq_repmsg, REPLY_REC_OFF + 2,
- sizeof(struct llog_cookie) *
- lsm->lsm_stripe_count);
+ oti.oti_logcookies =
+ req_capsule_server_sized_get(&request->rq_pill,
+ &RMF_LOGCOOKIES,
+ sizeof(struct llog_cookie) *
+ lsm->lsm_stripe_count);
if (oti.oti_logcookies == NULL) {
oa->o_valid &= ~OBD_MD_FLCOOKIE;
body->valid &= ~OBD_MD_FLCOOKIE;
if (rc)
GOTO(out, rc);
- ll_update_times(request, REPLY_REC_OFF, dir);
+ ll_update_times(request, dir);
rc = ll_objects_destroy(request, dir);
out:
tgt_name->name, tgt_name->len, &request);
ll_finish_md_op_data(op_data);
if (!err) {
- ll_update_times(request, REPLY_REC_OFF, src);
- ll_update_times(request, REPLY_REC_OFF, tgt);
+ ll_update_times(request, src);
+ ll_update_times(request, tgt);
err = ll_objects_destroy(request, src);
}