- fixes in check split optimization.
rc = md_getattr(mc->mc_desc.cl_exp, lu_object_fid(&mo->mo_lu),
NULL, OBD_MD_FLMODE | OBD_MD_FLUID | OBD_MD_FLGID |
- OBD_MD_FLFLAGS, 0, &mci->mci_req);
+ OBD_MD_FLFLAGS | OBD_MD_FLCROSSREF, 0, &mci->mci_req);
if (rc == 0) {
/* get attr from request */
rc = mdc_req2attr_update(env, ma);
LASSERT(spec->u.sp_pfid != NULL);
mci = mdc_info_init(env);
+ mci->mci_opdata.op_bias = MDS_CROSS_REF;
mci->mci_opdata.op_fid2 = *lu_object_fid(&mo->mo_lu);
/* Parent fid is needed to create dotdot on the remote node. */
LASSERT(mci);
memset(&mci->mci_opdata, 0, sizeof(mci->mci_opdata));
+ mci->mci_opdata.op_bias = MDS_CROSS_REF;
mci->mci_opdata.op_fid1 = *lu_object_fid(&mo->mo_lu);
//mci->mci_opdata.op_mod_time = la->la_ctime;
//mci->mci_opdata.op_fsuid = la->la_uid;
ENTRY;
mci = mdc_info_init(env);
+ mci->mci_opdata.op_bias = MDS_CROSS_REF;
mci->mci_opdata.op_fid1 = *lu_object_fid(&mo->mo_lu);
mci->mci_opdata.op_mode = la->la_mode;
mci->mci_opdata.op_mod_time = la->la_ctime;
ENTRY;
mci = mdc_info_init(env);
+ mci->mci_opdata.op_bias = MDS_CROSS_REF;
mci->mci_opdata.op_fid1 = *lu_object_fid(&mo_p->mo_lu);
mci->mci_opdata.op_fid2 = *lf;
mci->mci_opdata.op_mode = la->la_mode;
struct obd_capa *op_capa1;
struct obd_capa *op_capa2;
- /* Should server check split in lookups or not. */
- int op_cksplit;
+ /* Various operation flags. */
+ __u32 op_bias;
};
#define MDS_MODE_DONT_LOCK (1 << 30)
#define OBD_MD_FLMDSCAPA (0x0000020000000000ULL) /* MDS capability */
#define OBD_MD_FLOSSCAPA (0x0000040000000000ULL) /* OSS capability */
#define OBD_MD_FLCKSPLIT (0x0000080000000000ULL) /* Check split on server */
+#define OBD_MD_FLCROSSREF (0x0000100000000000ULL) /* Cross-ref case */
#define OBD_MD_FLGETATTR (OBD_MD_FLID | OBD_MD_FLATIME | OBD_MD_FLMTIME | \
OBD_MD_FLCTIME | OBD_MD_FLSIZE | OBD_MD_FLBLKSZ | \
#define MDS_OPEN_HAS_EA 010000000000 /* specify object create pattern */
#define MDS_OPEN_HAS_OBJS 020000000000 /* Just set the EA the obj exist */
+enum {
+ MDS_CHECK_SPLIT = 1 << 0,
+ MDS_CROSS_REF = 1 << 1
+};
+
struct mds_rec_join {
struct ll_fid jr_fid;
__u64 jr_headsize;
__u64 cr_rdev;
__u64 cr_ioepoch;
__u32 cr_suppgid;
- __u32 cr_cksplit;
+ __u32 cr_bias;
__u32 cr_padding_2; /* also fix lustre_swab_mds_rec_create */
__u32 cr_padding_3; /* also fix lustre_swab_mds_rec_create */
};
struct lu_fid lk_fid1;
struct lu_fid lk_fid2;
__u64 lk_time;
- __u32 lk_cksplit;
+ __u32 lk_bias;
__u32 lk_padding_2; /* also fix lustre_swab_mds_rec_link */
__u32 lk_padding_3; /* also fix lustre_swab_mds_rec_link */
__u32 lk_padding_4; /* also fix lustre_swab_mds_rec_link */
struct lu_fid ul_fid1;
struct lu_fid ul_fid2;
__u64 ul_time;
- __u32 ul_cksplit;
+ __u32 ul_bias;
__u32 ul_padding_2; /* also fix lustre_swab_mds_rec_unlink */
__u32 ul_padding_3; /* also fix lustre_swab_mds_rec_unlink */
__u32 ul_padding_4; /* also fix lustre_swab_mds_rec_unlink */
struct lu_fid rn_fid2;
__u64 rn_time;
__u32 rn_mode; /* cross-ref rename has mode */
- __u32 rn_cksplit; /* check for split or not */
+ __u32 rn_bias; /* some operation flags */
__u32 rn_padding_3; /* also fix lustre_swab_mdt_rec_rename */
__u32 rn_padding_4; /* also fix lustre_swab_mdt_rec_rename */
};
op_data->op_fsuid = current->fsuid;
op_data->op_fsgid = current->fsgid;
op_data->op_cap = current->cap_effective;
+ op_data->op_bias = MDS_CHECK_SPLIT;
return op_data;
}
GOTO(out, rc = -ENOMEM);
op_data->op_fid1 = body->fid1;
- op_data->op_cksplit = 0;
+ op_data->op_bias = MDS_CROSS_REF;
rc = md_intent_lock(tgt_exp, op_data, lmm, lmmsize, it, flags,
&req, cb_blocking, extra_lock_flags);
rpid = obj->lo_inodes[mea_idx].li_fid;
tgt_exp = lmv_get_export(lmv, obj->lo_inodes[mea_idx].li_mds);
- sop_data->op_cksplit = 0;
+ sop_data->op_bias &= ~MDS_CHECK_SPLIT;
lmv_obj_put(obj);
CDEBUG(D_OTHER, "Choose slave dir ("DFID")\n", PFID(&rpid));
} else {
tgt_exp = lmv_find_export(lmv, &rpid);
- sop_data->op_cksplit = 1;
+ sop_data->op_bias |= MDS_CHECK_SPLIT;
}
if (IS_ERR(tgt_exp))
GOTO(out_free_sop_data, rc = PTR_ERR(tgt_exp));
op_data->op_namelen);
rpid = obj->lo_inodes[mea_idx].li_fid;
mds = obj->lo_inodes[mea_idx].li_mds;
- sop_data->op_cksplit = 0;
+ sop_data->op_bias &= ~MDS_CHECK_SPLIT;
lmv_obj_put(obj);
CDEBUG(D_OTHER, "forward to MDS #"LPU64" (slave "DFID")\n",
rc = lmv_fld_lookup(lmv, &op_data->op_fid1, &mds);
if (rc)
GOTO(out_free_sop_data, rc);
- sop_data->op_cksplit = 1;
+ sop_data->op_bias |= MDS_CHECK_SPLIT;
}
}
memset(op_data, 0, sizeof(*op_data));
op_data->op_fid1 = fid;
op_data->op_fid2 = fid;
- op_data->op_cksplit = 0;
+ op_data->op_bias = MDS_CROSS_REF;
tgt_exp = lmv_get_export(lmv, obj->lo_inodes[i].li_mds);
if (IS_ERR(tgt_exp))
op_data->op_namelen);
rpid = obj->lo_inodes[mea_idx].li_fid;
mds = obj->lo_inodes[mea_idx].li_mds;
- sop_data->op_cksplit = 0;
+ sop_data->op_bias &= ~MDS_CHECK_SPLIT;
lmv_obj_put(obj);
} else {
rc = lmv_fld_lookup(lmv, &rpid, &mds);
if (rc)
GOTO(out_free_sop_data, rc);
- sop_data->op_cksplit = 1;
+ sop_data->op_bias |= MDS_CHECK_SPLIT;
}
CDEBUG(D_OTHER, "revalidate lookup for "DFID" to #"LPU64" MDS\n",
rpid = obj->lo_inodes[mea_idx].li_fid;
mds = obj->lo_inodes[mea_idx].li_mds;
}
- sop_data->op_cksplit = 0;
+ sop_data->op_bias &= ~MDS_CHECK_SPLIT;
lmv_obj_put(obj);
} else {
rc = lmv_fld_lookup(lmv, &op_data->op_fid1, &mds);
if (rc)
GOTO(out_free_sop_data, rc);
- sop_data->op_cksplit = 1;
+ sop_data->op_bias |= MDS_CHECK_SPLIT;
}
fid_zero(&sop_data->op_fid2);
}
+ sop_data->op_bias &= ~MDS_CROSS_REF;
sop_data->op_fid1 = rpid;
rc = md_intent_lock(lmv->tgts[mds].ltd_exp, sop_data, lmm, lmmsize,
master = 1;
cb = cb_blocking;
}
-
+
op_data->op_fid1 = fid;
op_data->op_fid2 = fid;
- op_data->op_cksplit = 0;
+ op_data->op_bias = MDS_CROSS_REF;
/* is obj valid? */
tgt_exp = lmv_get_export(lmv, obj->lo_inodes[i].li_mds);
mea_idx = raw_name2idx(obj->lo_hashtype, obj->lo_objcount,
op_data->op_name, op_data->op_namelen);
op_data->op_fid1 = obj->lo_inodes[mea_idx].li_fid;
- op_data->op_cksplit = 0;
+ op_data->op_bias &= ~MDS_CHECK_SPLIT;
tgt_exp = lmv_get_export(lmv, obj->lo_inodes[mea_idx].li_mds);
lmv_obj_put(obj);
} else {
tgt_exp = lmv_find_export(lmv, &op_data->op_fid1);
- op_data->op_cksplit = 1;
+ op_data->op_bias |= MDS_CHECK_SPLIT;
}
if (IS_ERR(tgt_exp))
for (i = 0; i < mea->mea_count; i++) {
memset(op_data2, 0, sizeof(*op_data2));
op_data2->op_fid1 = mea->mea_ids[i];
- op_data2->op_cksplit = 0;
-
+ op_data2->op_bias = 0;
+
tgt_exp = lmv_find_export(lmv, &op_data2->op_fid1);
if (IS_ERR(tgt_exp))
GOTO(cleanup, rc = PTR_ERR(tgt_exp));
rdata->op_fid1 = fid_copy;
rdata->op_name = NULL;
rdata->op_namelen = 0;
+ rdata->op_bias = 0;
rc = md_enqueue(tgt_exp, lock_type, it, lock_mode, rdata,
lockh, lmm, lmmsize, cb_compl, cb_blocking,
}
rc = md_getattr_name(tgt_exp, &rid, NULL, NULL, 1,
- valid, ea_size, &req);
+ valid | OBD_MD_FLCROSSREF,
+ ea_size, &req);
ptlrpc_req_finished(*request);
*request = req;
}
if (op_data2 == NULL)
RETURN(-ENOMEM);
+ op_data2->op_mode = MDS_MODE_DONT_LOCK | S_IFDIR;
+ op_data2->op_fsuid = current->fsuid;
+ op_data2->op_fsgid = current->fsgid;
+ op_data2->op_bias = 0;
+
LASSERT(mea != NULL);
for (i = 0; i < mea->mea_count; i++) {
memset(op_data2, 0, sizeof(*op_data2));
op_data2->op_fid1 = mea->mea_ids[i];
- op_data2->op_mode = MDS_MODE_DONT_LOCK | S_IFDIR;
- op_data2->op_fsuid = current->fsuid;
- op_data2->op_fsgid = current->fsgid;
tgt_exp = lmv_find_export(lmv, &op_data2->op_fid1);
if (IS_ERR(tgt_exp))
GOTO(out_free_op_data2, rc = PTR_ERR(tgt_exp));
obj->lo_objcount,
op_data->op_name,
op_data->op_namelen);
+ op_data->op_bias &= ~MDS_CHECK_SPLIT;
op_data->op_fid1 = obj->lo_inodes[mea_idx].li_fid;
tgt_exp = lmv_get_export(lmv,
obj->lo_inodes[mea_idx].li_mds);
CDEBUG(D_OTHER, "drop i_nlink on "DFID"\n",
PFID(&op_data->op_fid1));
}
- if (tgt_exp == NULL)
+ if (tgt_exp == NULL) {
tgt_exp = lmv_find_export(lmv, &op_data->op_fid1);
- if (IS_ERR(tgt_exp))
- RETURN(PTR_ERR(tgt_exp));
+ if (IS_ERR(tgt_exp))
+ RETURN(PTR_ERR(tgt_exp));
+ op_data->op_bias |= MDS_CHECK_SPLIT;
+ }
op_data->op_fsuid = current->fsuid;
op_data->op_fsgid = current->fsgid;
op_data->op_cap = current->cap_effective;
+
rc = md_unlink(tgt_exp, op_data, request);
if (rc == -ERESTART) {
LASSERT(*request != NULL);
rec->cr_time = op_data->op_mod_time;
rec->cr_suppgid = op_data->op_suppgids[0];
rec->cr_flags = op_data->op_flags;
- rec->cr_cksplit = op_data->op_cksplit;
+ rec->cr_bias = op_data->op_bias;
mdc_pack_capa(req, offset + 1, op_data->op_capa1);
rec->cr_rdev = rdev;
rec->cr_time = op_data->op_mod_time;
rec->cr_suppgid = op_data->op_suppgids[0];
- rec->cr_cksplit = op_data->op_cksplit;
+ rec->cr_bias = op_data->op_bias;
mdc_pack_capa(req, offset + 1, op_data->op_capa1);
/* the next buffer is child capa, which is used for replay,
rec->ul_fid1 = op_data->op_fid1;
rec->ul_fid2 = op_data->op_fid2;
rec->ul_time = op_data->op_mod_time;
- rec->ul_cksplit = op_data->op_cksplit;
+ rec->ul_bias = op_data->op_bias;
mdc_pack_capa(req, offset + 1, op_data->op_capa1);
rec->lk_fid1 = op_data->op_fid1;
rec->lk_fid2 = op_data->op_fid2;
rec->lk_time = op_data->op_mod_time;
- rec->lk_cksplit = op_data->op_cksplit;
+ rec->lk_bias = op_data->op_bias;
mdc_pack_capa(req, offset + 1, op_data->op_capa1);
mdc_pack_capa(req, offset + 2, op_data->op_capa2);
rec->rn_fid2 = op_data->op_fid2;
rec->rn_time = op_data->op_mod_time;
rec->rn_mode = op_data->op_mode;
- rec->rn_cksplit = op_data->op_cksplit;
+ rec->rn_bias = op_data->op_bias;
mdc_pack_capa(req, offset + 1, op_data->op_capa1);
mdc_pack_capa(req, offset + 2, op_data->op_capa2);
b->fsgid = current->fsgid;
b->capability = current->cap_effective;
b->valid = valid;
+ if (op_data->op_bias & MDS_CHECK_SPLIT)
+ b->valid |= OBD_MD_FLCKSPLIT;
+ if (op_data->op_bias & MDS_CROSS_REF)
+ b->valid |= OBD_MD_FLCROSSREF;
b->flags = flags | MDS_BFLAG_EXT_FLAGS;
b->suppgid = op_data->op_suppgids[0];
}
-static int mdd_create_data(const struct lu_env *env,
- struct md_object *pobj, struct md_object *cobj,
- const struct md_op_spec *spec,
+static int mdd_create_data(const struct lu_env *env, struct md_object *pobj,
+ struct md_object *cobj, const struct md_op_spec *spec,
struct md_attr *ma)
{
struct mdd_device *mdd = mdo2mdd(cobj);
- struct mdd_object *mdd_pobj = md2mdd_obj(pobj);/* XXX maybe NULL */
+ struct mdd_object *mdd_pobj = md2mdd_obj(pobj);
struct mdd_object *son = md2mdd_obj(cobj);
struct lu_attr *attr = &ma->ma_attr;
struct lov_mds_md *lmm = NULL;
RETURN(rc);
if (spec->sp_cr_flags & MDS_OPEN_DELAY_CREATE ||
- !(spec->sp_cr_flags & FMODE_WRITE))
+ !(spec->sp_cr_flags & FMODE_WRITE))
RETURN(0);
- rc = mdd_lov_create(env, mdd, mdd_pobj, son, &lmm, &lmm_size, spec,
- attr);
+
+ rc = mdd_lov_create(env, mdd, mdd_pobj, son, &lmm, &lmm_size,
+ spec, attr);
if (rc)
RETURN(rc);
repbody->valid |= OBD_MD_MEA;
}
} else if (S_ISLNK(la->la_mode) &&
- reqbody->valid & OBD_MD_LINKNAME) {
+ reqbody->valid & OBD_MD_LINKNAME) {
buffer->lb_buf = ma->ma_lmm;
buffer->lb_len = reqbody->eadatasize;
rc = mo_readlink(env, next, buffer);
repbody->max_mdsize = info->mti_mdt->mdt_max_mdsize;
repbody->valid |= OBD_MD_FLMODEASIZE;
CDEBUG(D_INODE, "I am going to change the MAX_MD_SIZE & "
- "MAX_COOKIE to : %d:%d\n",
- repbody->max_mdsize,
- repbody->max_cookiesize);
+ "MAX_COOKIE to : %d:%d\n", repbody->max_mdsize,
+ repbody->max_cookiesize);
}
if (med->med_rmtclient && (reqbody->valid & OBD_MD_FLRMTPERM)) {
RETURN(err_serious(rc));
repbody = req_capsule_server_get(pill, &RMF_MDT_BODY);
- LASSERT(repbody);
+ LASSERT(repbody != NULL);
repbody->eadatasize = 0;
repbody->aclsize = 0;
if (rc)
GOTO(out, rc);
- /* don't check capability at all, because rename might
- * getattr for remote obj, and at that time no capability
- * is available. */
+ info->mti_spec.sp_ck_split = !!(reqbody->valid & OBD_MD_FLCKSPLIT);
+ info->mti_cross_ref = !!(reqbody->valid & OBD_MD_FLCROSSREF);
+
+ /*
+ * Don't check capability at all, because rename might getattr for
+ * remote obj, and at that time no capability is available.
+ */
mdt_set_capainfo(info, 1, &reqbody->fid1, BYPASS_CAPA);
rc = mdt_getattr_internal(info, obj);
if (reqbody->valid & OBD_MD_FLRMTPERM)
if (reqbody->valid != OBD_MD_FLID)
RETURN(0);
+ LASSERT(!info->mti_cross_ref);
+
/* Only got the fid of this obj by name */
rc = mdo_lookup(info->mti_env, next, name, child_fid,
&info->mti_spec);
RETURN(-ESTALE);
else if (rc < 0) {
CERROR("Object "DFID" locates on remote server\n",
- PFID(mdt_object_fid(parent)));
+ PFID(mdt_object_fid(parent)));
LBUG();
}
RETURN(rc);
}
- if (name[0] == 0) {
+ if (info->mti_cross_ref) {
/* Only getattr on the child. Parent is on another node. */
mdt_set_disposition(info, ldlm_rep, DISP_LOOKUP_POS);
child = parent;
/* Debugging code. */
res_id = &lock->l_resource->lr_name;
- LDLM_DEBUG(lock, "we will return this lock client\n");
+ LDLM_DEBUG(lock, "We will return this lock client\n");
LASSERTF(fid_res_name_eq(mdt_object_fid(child),
&lock->l_resource->lr_name),
- "Lock res_id: %lu/%lu/%lu, Fid: "DFID".\n",
- (unsigned long)res_id->name[0],
- (unsigned long)res_id->name[1],
- (unsigned long)res_id->name[2],
- PFID(mdt_object_fid(child)));
-
- /* Pack Size-on-MDS inode attributes to the body if
- * update lock is given. */
+ "Lock res_id: %lu/%lu/%lu, Fid: "DFID".\n",
+ (unsigned long)res_id->name[0],
+ (unsigned long)res_id->name[1],
+ (unsigned long)res_id->name[2],
+ PFID(mdt_object_fid(child)));
+
+ /*
+ * Pack Size-on-MDS inode attributes to the body if
+ * update lock is given.
+ */
repbody = req_capsule_server_get(&info->mti_pill,
&RMF_MDT_BODY);
ma = &info->mti_attr.ma_attr;
repbody = req_capsule_server_get(&info->mti_pill, &RMF_MDT_BODY);
LASSERT(repbody != NULL);
- info->mti_spec.sp_ck_split = (reqbody->valid & OBD_MD_FLCKSPLIT);
+ info->mti_spec.sp_ck_split = !!(reqbody->valid & OBD_MD_FLCKSPLIT);
+ info->mti_cross_ref = !!(reqbody->valid & OBD_MD_FLCROSSREF);
repbody->eadatasize = 0;
repbody->aclsize = 0;
rc = 0;
if (rc == 0 && (flags & HABEO_REFERO)) {
- struct mdt_device *mdt = info->mti_mdt;
- /*pack reply*/
+ struct mdt_device *mdt = info->mti_mdt;
+
+ /* 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);
info->mti_dlm_req = NULL;
info->mti_has_trans = 0;
info->mti_no_need_trans = 0;
+ info->mti_cross_ref = 0;
info->mti_opdata = 0;
/* To not check for split by default. */
reqbody = req_capsule_client_get(&info->mti_pill, &RMF_MDT_BODY);
LASSERT(reqbody);
+
repbody = req_capsule_server_get(&info->mti_pill, &RMF_MDT_BODY);
LASSERT(repbody);
+
+ info->mti_spec.sp_ck_split = !!(reqbody->valid & OBD_MD_FLCKSPLIT);
+ info->mti_cross_ref = !!(reqbody->valid & OBD_MD_FLCROSSREF);
repbody->eadatasize = 0;
repbody->aclsize = 0;
const struct ldlm_request *mti_dlm_req;
__u32 mti_has_trans:1, /* has txn already? */
- mti_no_need_trans:1;
+ mti_no_need_trans:1,
+ mti_cross_ref:1;
/* opdata for mdt_reint_open(), has the same as
* ldlm_reply:lock_policy_res1. mdt_update_last_rcvd() stores this
struct mdt_reint_record mti_rr;
/*
- * Create specification
+ * Operation specification (currently create and lookup)
*/
struct md_op_spec mti_spec;
LA_CTIME | LA_MTIME | LA_ATIME;
memset(&sp->u, 0, sizeof(sp->u));
sp->sp_cr_flags = rec->cr_flags;
- sp->sp_ck_split = rec->cr_cksplit;
+ sp->sp_ck_split = !!(rec->cr_bias & MDS_CHECK_SPLIT);
+ info->mti_cross_ref = !!(rec->cr_bias & MDS_CROSS_REF);
if (req_capsule_get_size(pill, &RMF_CAPA1, RCL_CLIENT))
mdt_set_capainfo(info, 0, rr->rr_fid1,
if (rr->rr_name == NULL)
RETURN(-EFAULT);
rr->rr_namelen = req_capsule_get_size(pill, &RMF_NAME, RCL_CLIENT);
- info->mti_spec.sp_ck_split = rec->lk_cksplit;
+ info->mti_spec.sp_ck_split = !!(rec->lk_bias & MDS_CHECK_SPLIT);
+ info->mti_cross_ref = !!(rec->lk_bias & MDS_CROSS_REF);
RETURN(0);
}
if (rr->rr_name == NULL)
RETURN(-EFAULT);
rr->rr_namelen = req_capsule_get_size(pill, &RMF_NAME, RCL_CLIENT);
- info->mti_spec.sp_ck_split = rec->ul_cksplit;
+ info->mti_spec.sp_ck_split = !!(rec->ul_bias & MDS_CHECK_SPLIT);
+ info->mti_cross_ref = !!(rec->ul_bias & MDS_CROSS_REF);
RETURN(0);
}
RETURN(-EFAULT);
rr->rr_namelen = req_capsule_get_size(pill, &RMF_NAME, RCL_CLIENT);
rr->rr_tgtlen = req_capsule_get_size(pill, &RMF_SYMTGT, RCL_CLIENT);
- info->mti_spec.sp_ck_split = rec->rn_cksplit;
+ info->mti_spec.sp_ck_split = !!(rec->rn_bias & MDS_CHECK_SPLIT);
+ info->mti_cross_ref = !!(rec->rn_bias & MDS_CROSS_REF);
RETURN(0);
}
info->mti_spec.sp_cr_flags = rec->cr_flags;
info->mti_replayepoch = rec->cr_ioepoch;
- info->mti_spec.sp_ck_split = rec->cr_cksplit;
+ info->mti_spec.sp_ck_split = !!(rec->cr_bias & MDS_CHECK_SPLIT);
+ info->mti_cross_ref = !!(rec->cr_bias & MDS_CROSS_REF);
if (req_capsule_get_size(pill, &RMF_CAPA1, RCL_CLIENT))
mdt_set_capainfo(info, 0, rr->rr_fid1,
mdt_set_disposition(info, ldlm_rep,
(DISP_IT_EXECD | DISP_LOOKUP_EXECD));
- if (rr->rr_name[0] == 0) {
+ if (info->mti_cross_ref) {
/* This is cross-ref open */
mdt_set_disposition(info, ldlm_rep, DISP_LOOKUP_POS);
result = mdt_cross_open(info, rr->rr_fid1, ldlm_rep,
switch (info->mti_attr.ma_attr.la_mode & S_IFMT) {
case S_IFDIR:{
/* Cross-ref case. */
- if (info->mti_rr.rr_name[0] == 0) {
+ if (info->mti_cross_ref) {
rc = mdt_md_mkobj(info);
break;
}
if (!ma->ma_lmm || !ma->ma_cookie)
GOTO(out_unlock_parent, rc = -EINVAL);
- if (rr->rr_name[0] == 0) {
+ if (info->mti_cross_ref) {
/*
* Remote partial operation. It is possible that replay may
* happen on parent MDT and this operation will be repeated.
if (MDT_FAIL_CHECK(OBD_FAIL_MDS_REINT_LINK))
RETURN(err_serious(-ENOENT));
- if (rr->rr_name[0] == 0) {
+ if (info->mti_cross_ref) {
/* MDT holding name ask us to add ref. */
lhs = &info->mti_lh[MDT_LH_CHILD];
mdt_lock_reg_init(lhs, LCK_EX);
int rc;
ENTRY;
- if (rr->rr_name[0] == 0) {
+ if (info->mti_cross_ref) {
rc = mdt_reint_rename_tgt(info);
RETURN(rc);
}
struct ptlrpc_request_pool *pool = request->rq_pool;
spin_lock(&pool->prp_lock);
+ LASSERT(list_empty(&request->rq_list));
list_add_tail(&request->rq_list, &pool->prp_req_list);
spin_unlock(&pool->prp_lock);
}
__swab64s (&cr->cr_rdev);
__swab64s (&cr->cr_ioepoch);
__swab32s (&cr->cr_suppgid);
- __swab32s (&cr->cr_cksplit);
+ __swab32s (&cr->cr_bias);
CLASSERT(offsetof(typeof(*cr), cr_padding_2) != 0);
CLASSERT(offsetof(typeof(*cr), cr_padding_3) != 0);
}
lustre_swab_lu_fid (&lk->lk_fid1);
lustre_swab_lu_fid (&lk->lk_fid2);
__swab64s (&lk->lk_time);
- __swab32s (&lk->lk_cksplit);
+ __swab32s (&lk->lk_bias);
CLASSERT(offsetof(typeof(*lk), lk_padding_2) != 0);
CLASSERT(offsetof(typeof(*lk), lk_padding_3) != 0);
CLASSERT(offsetof(typeof(*lk), lk_padding_4) != 0);
lustre_swab_lu_fid (&ul->ul_fid1);
lustre_swab_lu_fid (&ul->ul_fid2);
__swab64s (&ul->ul_time);
- __swab32s (&ul->ul_cksplit);
+ __swab32s (&ul->ul_bias);
CLASSERT(offsetof(typeof(*ul), ul_padding_2) != 0);
CLASSERT(offsetof(typeof(*ul), ul_padding_3) != 0);
CLASSERT(offsetof(typeof(*ul), ul_padding_4) != 0);
lustre_swab_lu_fid (&rn->rn_fid2);
__swab64s (&rn->rn_time);
__swab32s (&rn->rn_mode);
- __swab32s (&rn->rn_cksplit);
+ __swab32s (&rn->rn_bias);
CLASSERT(offsetof(typeof(*rn), rn_padding_3) != 0);
CLASSERT(offsetof(typeof(*rn), rn_padding_4) != 0);
}
sprintf(buf, " -I %ld", inode_size);
strcat(mop->mo_mkfsopts, buf);
}
-
}
- if (verbose < 2) {
+ if (verbose < 2)
strcat(mop->mo_mkfsopts, " -q");
- }
/* Enable hashed b-tree directory lookup in large dirs bz6224 */
- if (strstr(mop->mo_mkfsopts, "-O") == NULL) {
+ if (strstr(mop->mo_mkfsopts, "-O") == NULL)
strcat(mop->mo_mkfsopts, " -O dir_index");
- }
/* Allow reformat of full devices (as opposed to
partitions.) We already checked for mounted dev. */
sprintf(mkfs_cmd, "mkfs.ext2 -j -b %d -L %s ", L_BLOCK_SIZE,
mop->mo_ldd.ldd_svname);
-
} else if (mop->mo_ldd.ldd_mount_type == LDD_MT_REISERFS) {
long journal_sz = 0; /* FIXME default journal size */
if (journal_sz > 0) {