* (1)normal request will release child lock;
* (2)intent request will grant it to client.
*/
-static int mdt_getattr_name_internal(struct mdt_thread_info *info,
- int child_bits)
+static int mdt_getattr_name_internal(struct mdt_thread_info *info,
+ __u64 child_bits)
{
struct mdt_object *parent = info->mti_object;
struct mdt_object *child;
RETURN(-EFAULT);
/*step 1: lock parent */
- result = mdt_object_lock(info->mti_mdt->mdt_namespace, parent,
+ result = mdt_object_lock(info->mti_mdt->mdt_namespace, parent,
lhp, MDS_INODELOCK_UPDATE);
if (result != 0)
RETURN(result);
-
+
/*step 2: lookup child's fid by name */
result = mdo_lookup(info->mti_ctxt, next, name, &body->fid1);
- if (result != 0)
+ if (result != 0)
GOTO(out_parent, result);
/*step 3: find the child object by fid */
} else {
intent_set_disposition(ldlm_rep, DISP_LOOKUP_POS);
}
-
+
/*step 4: lock child: this lock is returned back to caller
- * if successfully get attr.
+ * if successfully get attr.
*/
- result = mdt_object_lock(info->mti_mdt->mdt_namespace, child,
+ result = mdt_object_lock(info->mti_mdt->mdt_namespace, child,
lhc, child_bits);
if (result != 0)
GOTO(out_child, result);
rc = mdt_getattr_name_internal(info, MDS_INODELOCK_UPDATE);
if (rc == 0 && lustre_handle_is_used(&lhc->mlh_lh))
- ldlm_lock_decref(&lhc->mlh_lh, lhc->mlh_mode);
+ ldlm_lock_decref(&lhc->mlh_lh, lhc->mlh_mode);
RETURN(rc);
}
*/
int fid_res_name_eq(const struct lu_fid *f, const struct ldlm_res_id *name)
{
- return name->name[0] == fid_seq(f) &&
- name->name[1] == fid_oid(f) &&
+ return name->name[0] == fid_seq(f) &&
+ name->name[1] == fid_oid(f) &&
name->name[2] == fid_ver(f);
}
struct ldlm_lock **lockp,
int flags)
{
- int child_bits;
+ __u64 child_bits;
struct ldlm_lock *old_lock = *lockp;
struct ldlm_lock *new_lock = NULL;
struct mdt_lock_handle *lhc;
struct ldlm_reply *ldlm_rep;
ENTRY;
-
+
switch (opcode) {
case MDT_IT_LOOKUP:
child_bits = MDS_INODELOCK_LOOKUP;
RETURN(-EINVAL);
break;
}
-
+
ldlm_rep = req_capsule_server_get(&info->mti_pill, &RMF_DLM_REP);
intent_set_disposition(ldlm_rep, DISP_LOOKUP_EXECD);
/* lock on child object is returned @info->mti_lh[MDT_LH_CHILD] */
- ldlm_rep->lock_policy_res2 = mdt_getattr_name_internal(info, child_bits);
+ ldlm_rep->lock_policy_res2 = mdt_getattr_name_internal(info,
+ child_bits);
if (intent_disposition(ldlm_rep, DISP_LOOKUP_NEG))
ldlm_rep->lock_policy_res2 = 0;
if (!intent_disposition(ldlm_rep, DISP_LOOKUP_POS) ||
- ldlm_rep->lock_policy_res2) {
+ ldlm_rep->lock_policy_res2) {
RETURN(ELDLM_LOCK_ABORTED);
}
{
long opc;
struct ldlm_reply *rep;
-
+
static const struct req_format *intent_fmts[REINT_MAX] = {
[REINT_CREATE] = &RQF_LDLM_INTENT_CREATE,
[REINT_OPEN] = &RQF_LDLM_INTENT_OPEN
ENTRY;
rep = req_capsule_server_get(&info->mti_pill, &RMF_DLM_REP);
- if (rep == NULL)
+ if (rep == NULL)
RETURN(-EFAULT);
opc = mdt_reint_opcode(info, intent_fmts);
- if (opc < 0)
+ if (opc < 0)
RETURN(opc);
if (mdt_it_flavor[opcode].it_reint != opc) {
opc = mdt_intent_code(itopc);
if (opc < 0)
RETURN(-EINVAL);
-
+
pill = &info->mti_pill;
flv = &mdt_it_flavor[opc];
if (rc)
RETURN(rc);
-
+
OBD_ALLOC_PTR(ls->ls_server_seq);
if (ls->ls_server_seq != NULL) {
flags = (ls->ls_node_id == 0) ?
LUSTRE_SRV_SEQ_CONTROLLER :
LUSTRE_SRV_SEQ_REGULAR;
-
+
rc = seq_server_init(ls->ls_server_seq,
ls->ls_client_seq,
ctx, m->mdt_bottom,
{
struct lu_site *ls = m->mdt_md_dev.md_lu_dev.ld_site;
ENTRY;
-
+
if (ls->ls_server_seq) {
seq_server_fini(ls->ls_server_seq, ctx);
OBD_FREE_PTR(ls->ls_server_seq);
char *uuid_str;
int rc, index;
ENTRY;
-
+
index = simple_strtol(lustre_cfg_string(cfg, 2), NULL, 10);
if (index != 0)
RETURN(0);
ls->ls_controller = class_conn2export(&conn);
}
}
-
+
RETURN(rc);
}
struct lu_site *ls;
int rc;
ENTRY;
-
+
ls = m->mdt_md_dev.md_lu_dev.ld_site;
if (ls && ls->ls_controller) {
rc = obd_disconnect(ls->ls_controller);
{
struct lu_site *ls = m->mdt_md_dev.md_lu_dev.ld_site;
ENTRY;
-
+
if (ls && ls->ls_fld) {
fld_server_fini(ls->ls_fld, ctx);
OBD_FREE_PTR(ls->ls_fld);
CERROR("type: '%s'\n", typename);
GOTO(out_type, rc = -EINVAL);
}
-
+
ldt->ldt_obd_type = type;
d = ldt->ldt_ops->ldto_device_alloc(ctx, ldt, cfg);
if (IS_ERR(d)) {
lu_context_exit(&ctx);
if (rc)
GOTO(err_fini_seq, rc);
-
+
lu_context_fini(&ctx);
snprintf(ns_name, sizeof ns_name, LUSTRE_MDT0_NAME"-%p", m);