}
}
-void mdt_pack_attr2body(struct mdt_body *b, const struct lu_attr *attr,
- const struct lu_fid *fid)
+void mdt_pack_attr2body(struct mdt_thread_info *info, struct mdt_body *b,
+ const struct lu_attr *attr, const struct lu_fid *fid)
{
/*XXX should pack the reply body according to lu_valid*/
b->valid |= OBD_MD_FLCTIME | OBD_MD_FLUID |
CDEBUG(D_INODE, ""DFID": nlink=%d, mode=%o, size="LPU64"\n",
PFID(fid), b->nlink, b->mode, b->size);
}
+
+ if (info)
+ mdt_body_reverse_idmap(info, b);
}
static inline int mdt_body_has_lov(const struct lu_attr *la,
RETURN(rc);
}
- if (ma->ma_valid & MA_INODE) {
- mdt_pack_attr2body(repbody, la, mdt_object_fid(o));
- mdt_body_reverse_idmap(info, repbody);
- } else {
+ if (ma->ma_valid & MA_INODE)
+ mdt_pack_attr2body(info, repbody, la, mdt_object_fid(o));
+ else
RETURN(-EFAULT);
- }
if (mdt_body_has_lov(la, reqbody)) {
if (ma->ma_valid & MA_LOV) {
body = req_capsule_server_get(pill,
&RMF_MDT_BODY);
fid = mdt_object_fid(info->mti_object);
- mdt_pack_attr2body(body, la, fid);
- mdt_body_reverse_idmap(info, body);
+ mdt_pack_attr2body(info, body, la, fid);
}
}
} else
int mdt_reint_rec(struct mdt_thread_info *, struct mdt_lock_handle *);
void mdt_pack_size2body(struct mdt_body *b, const struct lu_attr *attr,
struct mdt_object *o);
-void mdt_pack_attr2body(struct mdt_body *b, const struct lu_attr *attr,
- const struct lu_fid *fid);
+void mdt_pack_attr2body(struct mdt_thread_info *info, struct mdt_body *b,
+ const struct lu_attr *attr, const struct lu_fid *fid);
int mdt_getxattr(struct mdt_thread_info *info);
int mdt_setxattr(struct mdt_thread_info *info);
repbody = req_capsule_server_get(&info->mti_pill, &RMF_MDT_BODY);
LASSERT(repbody != NULL);
- if (ma->ma_valid & MA_INODE) {
- mdt_pack_attr2body(repbody, la, mdt_object_fid(mo));
- mdt_body_reverse_idmap(info, repbody);
- }
+ if (ma->ma_valid & MA_INODE)
+ mdt_pack_attr2body(info, repbody, la, mdt_object_fid(mo));
if (ma->ma_valid & MA_LOV) {
__u32 mode;
isreg = S_ISREG(la->la_mode);
isdir = S_ISDIR(la->la_mode);
islnk = S_ISLNK(la->la_mode);
- mdt_pack_attr2body(repbody, la, mdt_object_fid(o));
- mdt_body_reverse_idmap(info, repbody);
+ mdt_pack_attr2body(info, repbody, la, mdt_object_fid(o));
if (med->med_rmtclient) {
void *buf = req_capsule_server_get(&info->mti_pill, &RMF_ACL);
req->rq_status = rc;
body->valid |= OBD_MD_MDS;
}
- mdt_pack_attr2body(body, &mti->mti_attr.ma_attr, mdt_object_fid(child));
- mdt_body_reverse_idmap(mti, body);
+ mdt_pack_attr2body(mti, body, &mti->mti_attr.ma_attr, mdt_object_fid(child));
mdt_object_put(mti->mti_env, child);
}
obj = mdt_object_find(mti->mti_env, mdt, mti->mti_rr.rr_fid1);
LASSERT(!IS_ERR(obj));
mo_attr_get(mti->mti_env, mdt_object_child(obj), &mti->mti_attr);
- mdt_pack_attr2body(body, &mti->mti_attr.ma_attr, mdt_object_fid(obj));
- mdt_body_reverse_idmap(mti, body);
+ mdt_pack_attr2body(mti, body, &mti->mti_attr.ma_attr, mdt_object_fid(obj));
/* Don't return OST-specific attributes if we didn't just set them */
/*
if (rc == 0) {
/* return fid & attr to client. */
if (ma->ma_valid & MA_INODE)
- mdt_pack_attr2body(repbody, &ma->ma_attr,
+ mdt_pack_attr2body(info, repbody, &ma->ma_attr,
mdt_object_fid(child));
- mdt_body_reverse_idmap(info, repbody);
}
mdt_object_put(info->mti_env, child);
} else
if (rc == 0) {
/* return fid & attr to client. */
if (ma->ma_valid & MA_INODE)
- mdt_pack_attr2body(repbody, &ma->ma_attr,
+ mdt_pack_attr2body(info, repbody, &ma->ma_attr,
mdt_object_fid(o));
- mdt_body_reverse_idmap(info, repbody);
}
mdt_object_put(info->mti_env, o);
} else
if (rc != 0)
GOTO(out, rc);
- mdt_pack_attr2body(repbody, &ma->ma_attr, mdt_object_fid(mo));
+ mdt_pack_attr2body(info, repbody, &ma->ma_attr, mdt_object_fid(mo));
if (mdt->mdt_opts.mo_oss_capa &&
S_ISREG(lu_object_attr(&mo->mot_obj.mo_lu))) {
repbody->valid |= OBD_MD_FLOSSCAPA;
}
- mdt_body_reverse_idmap(info, repbody);
EXIT;
out:
mdt_object_put(info->mti_env, mo);