enum mds_op_bias {
/* MDS_CHECK_SPLIT = 1 << 0, obsolete before 2.3.58 */
MDS_CROSS_REF = 1 << 1,
- MDS_VTX_BYPASS = 1 << 2,
+/* MDS_VTX_BYPASS = 1 << 2, obsolete since 2.3.54 */
MDS_PERM_BYPASS = 1 << 3,
/* MDS_SOM = 1 << 4, obsolete since 2.8.0 */
MDS_QUOTA_IGNORE = 1 << 5,
- /* Was MDS_CLOSE_CLEANUP (1 << 6), No more used */
+/* MDS_CLOSE_CLEANUP = 1 << 6, obsolete since 2.3.51 */
MDS_KEEP_ORPHAN = 1 << 7,
MDS_RECOV_OPEN = 1 << 8,
MDS_DATA_MODIFIED = 1 << 9,
{
struct lu_ucred *uc = mdt_ucred(info);
struct mdt_rec_unlink *rec;
- struct md_attr *ma = &info->mti_attr;
struct lu_attr *attr = &info->mti_attr.ma_attr;
struct mdt_reint_record *rr = &info->mti_rr;
struct req_capsule *pill = info->mti_pill;
uc->uc_suppgids[0] = rec->ul_suppgid1;
uc->uc_suppgids[1] = -1;
- attr->la_uid = rec->ul_fsuid;
- attr->la_gid = rec->ul_fsgid;
- rr->rr_fid1 = &rec->ul_fid1;
- rr->rr_fid2 = &rec->ul_fid2;
- attr->la_ctime = rec->ul_time;
- attr->la_mtime = rec->ul_time;
- attr->la_mode = rec->ul_mode;
- attr->la_valid = LA_UID | LA_GID | LA_CTIME | LA_MTIME | LA_MODE;
+ attr->la_uid = rec->ul_fsuid;
+ attr->la_gid = rec->ul_fsgid;
+ rr->rr_fid1 = &rec->ul_fid1;
+ rr->rr_fid2 = &rec->ul_fid2;
+ attr->la_ctime = rec->ul_time;
+ attr->la_mtime = rec->ul_time;
+ attr->la_mode = rec->ul_mode;
+ attr->la_valid = LA_UID | LA_GID | LA_CTIME | LA_MTIME | LA_MODE;
rc = mdt_name_unpack(pill, &RMF_NAME, &rr->rr_name, 0);
if (rc < 0)
RETURN(rc);
- if (rec->ul_bias & MDS_VTX_BYPASS)
- ma->ma_attr_flags |= MDS_VTX_BYPASS;
- else
- ma->ma_attr_flags &= ~MDS_VTX_BYPASS;
-
info->mti_spec.no_create = !!req_is_replay(mdt_info_req(info));
- rc = mdt_dlmreq_unpack(info);
- RETURN(rc);
+ rc = mdt_dlmreq_unpack(info);
+ RETURN(rc);
}
static int mdt_rmentry_unpack(struct mdt_thread_info *info)
{
struct lu_ucred *uc = mdt_ucred(info);
struct mdt_rec_rename *rec;
- struct md_attr *ma = &info->mti_attr;
struct lu_attr *attr = &info->mti_attr.ma_attr;
struct mdt_reint_record *rr = &info->mti_rr;
struct req_capsule *pill = info->mti_pill;
uc->uc_suppgids[0] = rec->rn_suppgid1;
uc->uc_suppgids[1] = rec->rn_suppgid2;
- attr->la_uid = rec->rn_fsuid;
- attr->la_gid = rec->rn_fsgid;
- rr->rr_fid1 = &rec->rn_fid1;
- rr->rr_fid2 = &rec->rn_fid2;
- attr->la_ctime = rec->rn_time;
- attr->la_mtime = rec->rn_time;
- /* rename_tgt contains the mode already */
- attr->la_mode = rec->rn_mode;
- attr->la_valid = LA_UID | LA_GID | LA_CTIME | LA_MTIME | LA_MODE;
+ attr->la_uid = rec->rn_fsuid;
+ attr->la_gid = rec->rn_fsgid;
+ rr->rr_fid1 = &rec->rn_fid1;
+ rr->rr_fid2 = &rec->rn_fid2;
+ attr->la_ctime = rec->rn_time;
+ attr->la_mtime = rec->rn_time;
+ /* rename_tgt contains the mode already */
+ attr->la_mode = rec->rn_mode;
+ attr->la_valid = LA_UID | LA_GID | LA_CTIME | LA_MTIME | LA_MODE;
rc = mdt_name_unpack(pill, &RMF_NAME, &rr->rr_name, 0);
if (rc < 0)
if (rc < 0)
RETURN(rc);
- if (rec->rn_bias & MDS_VTX_BYPASS)
- ma->ma_attr_flags |= MDS_VTX_BYPASS;
- else
- ma->ma_attr_flags &= ~MDS_VTX_BYPASS;
-
if (rec->rn_bias & MDS_RENAME_MIGRATE) {
req_capsule_extend(info->mti_pill, &RQF_MDS_REINT_MIGRATE);
rc = mdt_close_handle_unpack(info);
info->mti_spec.sp_migrate_close = 1;
}
- 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);
if (rc > 0)
cos_incompat = true;
- lh = &info->mti_lh[MDT_LH_PARENT];
- mdt_lock_reg_init(lh, LCK_PW);
+ lh = &info->mti_lh[MDT_LH_PARENT];
+ mdt_lock_reg_init(lh, LCK_PW);
/* Even though the new MDT will grant PERM lock to the old
* client, but the old client will almost ignore that during
if (rc != 0)
GOTO(out_unlock, rc);
- /* all attrs are packed into mti_attr in unpack_setattr */
- mdt_fail_write(info->mti_env, info->mti_mdt->mdt_bottom,
- OBD_FAIL_MDS_REINT_SETATTR_WRITE);
-
- /* This is only for set ctime when rename's source is on remote MDS. */
- if (unlikely(ma->ma_attr.la_valid == LA_CTIME))
- ma->ma_attr_flags |= MDS_VTX_BYPASS;
+ /* all attrs are packed into mti_attr in unpack_setattr */
+ mdt_fail_write(info->mti_env, info->mti_mdt->mdt_bottom,
+ OBD_FAIL_MDS_REINT_SETATTR_WRITE);
- /* VBR: update version if attr changed are important for recovery */
- if (do_vbr) {
- /* update on-disk version of changed object */
+ /* VBR: update version if attr changed are important for recovery */
+ if (do_vbr) {
+ /* update on-disk version of changed object */
tgt_vbr_obj_set(info->mti_env, mdt_obj2dt(mo));
- rc = mdt_version_get_check_save(info, mo, 0);
- if (rc)
- GOTO(out_unlock, rc);
- }
+ rc = mdt_version_get_check_save(info, mo, 0);
+ if (rc)
+ GOTO(out_unlock, rc);
+ }
/* Ensure constant striping during chown(). See LU-2789. */
if (ma->ma_attr.la_valid & (LA_UID|LA_GID|LA_PROJID))
mutex_lock(&mo->mot_lov_mutex);
- /* all attrs are packed into mti_attr in unpack_setattr */
- rc = mo_attr_set(info->mti_env, mdt_object_child(mo), ma);
+ /* all attrs are packed into mti_attr in unpack_setattr */
+ rc = mo_attr_set(info->mti_env, mdt_object_child(mo), ma);
if (ma->ma_attr.la_valid & (LA_UID|LA_GID|LA_PROJID))
mutex_unlock(&mo->mot_lov_mutex);
- if (rc != 0)
- GOTO(out_unlock, rc);
+ if (rc != 0)
+ GOTO(out_unlock, rc);
mdt_dom_obj_lvb_update(info->mti_env, mo, false);
- EXIT;
+ EXIT;
out_unlock:
mdt_unlock_slaves(info, mo, lockpart, s0_lh, s0_obj, einfo, rc);
- mdt_object_unlock(info, mo, lh, rc);
- return rc;
+ mdt_object_unlock(info, mo, lh, rc);
+ return rc;
}
/**
LASSERTF(MDS_CROSS_REF == 0x00000002UL, "found 0x%.8xUL\n",
(unsigned)MDS_CROSS_REF);
- LASSERTF(MDS_VTX_BYPASS == 0x00000004UL, "found 0x%.8xUL\n",
- (unsigned)MDS_VTX_BYPASS);
LASSERTF(MDS_PERM_BYPASS == 0x00000008UL, "found 0x%.8xUL\n",
(unsigned)MDS_PERM_BYPASS);
LASSERTF(MDS_QUOTA_IGNORE == 0x00000020UL, "found 0x%.8xUL\n",
{
BLANK_LINE();
CHECK_VALUE_X(MDS_CROSS_REF);
- CHECK_VALUE_X(MDS_VTX_BYPASS);
CHECK_VALUE_X(MDS_PERM_BYPASS);
CHECK_VALUE_X(MDS_QUOTA_IGNORE);
CHECK_VALUE_X(MDS_KEEP_ORPHAN);
LASSERTF(MDS_CROSS_REF == 0x00000002UL, "found 0x%.8xUL\n",
(unsigned)MDS_CROSS_REF);
- LASSERTF(MDS_VTX_BYPASS == 0x00000004UL, "found 0x%.8xUL\n",
- (unsigned)MDS_VTX_BYPASS);
LASSERTF(MDS_PERM_BYPASS == 0x00000008UL, "found 0x%.8xUL\n",
(unsigned)MDS_PERM_BYPASS);
LASSERTF(MDS_QUOTA_IGNORE == 0x00000020UL, "found 0x%.8xUL\n",