acl_size = body->aclsize;
/* this replay - not send info to client */
- if (info->mti_spec.no_create == 1) {
- md_size = 0;
- acl_size = 0;
- }
+ if (info->mti_spec.no_create) {
+ md_size = 0;
+ acl_size = 0;
+ }
CDEBUG(D_INFO, "Shrink to md_size = %d cookie/acl_size = %d"
" MDSCAPA = %llx, OSSCAPA = %llx\n",
repbody->valid |= OBD_MD_FLCOOKIE;
}
- if (info->mti_mdt->mdt_opts.mo_oss_capa &&
- info->mti_exp->exp_connect_flags & OBD_CONNECT_OSS_CAPA &&
- repbody->valid & OBD_MD_FLEASIZE) {
+ if (info->mti_mdt->mdt_opts.mo_oss_capa &&
+ exp_connect_flags(info->mti_exp) & OBD_CONNECT_OSS_CAPA &&
+ repbody->valid & OBD_MD_FLEASIZE) {
struct lustre_capa *capa;
capa = req_capsule_server_get(info->mti_pill, &RMF_CAPA2);
if (in & ATTR_KILL_SGID)
out |= LA_KILL_SGID;
- if (in & MDS_OPEN_OWNEROVERRIDE)
- ma->ma_attr_flags |= MDS_OPEN_OWNEROVERRIDE;
+ if (in & MDS_OPEN_OWNEROVERRIDE)
+ ma->ma_attr_flags |= MDS_OWNEROVERRIDE;
if (in & ATTR_FORCE)
ma->ma_attr_flags |= MDS_PERM_BYPASS;
la->la_mtime = rec->sa_mtime;
ma->ma_valid = MA_INODE;
+ if (rec->sa_bias & MDS_DATA_MODIFIED)
+ ma->ma_attr_flags |= MDS_DATA_MODIFIED;
+ else
+ ma->ma_attr_flags &= ~MDS_DATA_MODIFIED;
+
if (req_capsule_get_size(pill, &RMF_CAPA1, RCL_CLIENT))
mdt_set_capainfo(info, 0, rr->rr_fid1,
req_capsule_client_get(pill, &RMF_CAPA1));
attr->la_ctime = rec->cr_time;
attr->la_mtime = rec->cr_time;
attr->la_atime = rec->cr_time;
- attr->la_valid = LA_MODE | LA_RDEV | LA_UID | LA_GID |
- LA_CTIME | LA_MTIME | LA_ATIME;
+ attr->la_valid = LA_MODE | LA_RDEV | LA_UID | LA_GID | LA_TYPE |
+ LA_CTIME | LA_MTIME | LA_ATIME;
memset(&sp->u, 0, sizeof(sp->u));
sp->sp_cr_flags = get_mrc_cr_flags(rec);
else
ma->ma_attr_flags &= ~MDS_VTX_BYPASS;
- info->mti_spec.no_create = !!req_is_replay(mdt_info_req(info));
+ info->mti_spec.no_create = !!req_is_replay(mdt_info_req(info));
rc = mdt_dlmreq_unpack(info);
RETURN(rc);
}
+static int mdt_rmentry_unpack(struct mdt_thread_info *info)
+{
+ info->mti_spec.sp_rm_entry = 1;
+ return mdt_unlink_unpack(info);
+}
+
static int mdt_rename_unpack(struct mdt_thread_info *info)
{
struct lu_ucred *uc = mdt_ucred(info);
typedef int (*reint_unpacker)(struct mdt_thread_info *info);
static reint_unpacker mdt_reint_unpackers[REINT_MAX] = {
- [REINT_SETATTR] = mdt_setattr_unpack,
- [REINT_CREATE] = mdt_create_unpack,
- [REINT_LINK] = mdt_link_unpack,
- [REINT_UNLINK] = mdt_unlink_unpack,
- [REINT_RENAME] = mdt_rename_unpack,
- [REINT_OPEN] = mdt_open_unpack,
- [REINT_SETXATTR] = mdt_setxattr_unpack
+ [REINT_SETATTR] = mdt_setattr_unpack,
+ [REINT_CREATE] = mdt_create_unpack,
+ [REINT_LINK] = mdt_link_unpack,
+ [REINT_UNLINK] = mdt_unlink_unpack,
+ [REINT_RENAME] = mdt_rename_unpack,
+ [REINT_OPEN] = mdt_open_unpack,
+ [REINT_SETXATTR] = mdt_setxattr_unpack,
+ [REINT_RMENTRY] = mdt_rmentry_unpack,
};
int mdt_reint_unpack(struct mdt_thread_info *info, __u32 op)