}
static struct obd_device *cobd_md_get_real_obd(struct obd_export *exp,
- char *name, int len)
+ struct lustre_id *id)
{
struct obd_device *obd = class_exp2obd(exp);
struct obd_export *cobd_exp;
return NULL;
}
cobd_exp = cobd_get_exp(obd);
- return md_get_real_obd(cobd_exp, name, len);
+ return md_get_real_obd(cobd_exp, id);
}
static int cobd_md_change_cbdata_name(struct obd_export *exp,
struct ptlrpc_request **);
int (*m_valid_attrs)(struct obd_export *, struct lustre_id *);
- struct obd_device *(*m_get_real_obd)(struct obd_export *,
- char *name, int len);
+ struct obd_device *(*m_get_real_obd)(struct obd_export *, struct lustre_id *);
int (*m_req2lustre_md)(struct obd_export *exp,
struct ptlrpc_request *req, unsigned int offset,
}
static inline struct obd_device *md_get_real_obd(struct obd_export *exp,
- char *name, int len)
+ struct lustre_id *fid)
{
ENTRY;
if (MDP(exp->exp_obd, get_real_obd) == NULL)
return exp->exp_obd;
MD_COUNTER_INCREMENT(exp->exp_obd, get_real_obd);
- return MDP(exp->exp_obd, get_real_obd)(exp, name, len);
+ return MDP(exp->exp_obd, get_real_obd)(exp, fid);
}
static inline int md_valid_attrs(struct obd_export *exp,
ldlm_policy_data_t policy = { .l_inodebits = { MDS_INODELOCK_UPDATE } };
int rc;
- obddev = md_get_real_obd(ll_i2sbi(dir)->ll_md_exp, NULL, 0);
+ obddev = md_get_real_obd(ll_i2sbi(dir)->ll_md_exp, &li->lli_id);
rc = ldlm_lock_match(obddev->obd_namespace, LDLM_FL_BLOCK_GRANTED,
&res_id, LDLM_IBITS, &policy, LCK_PR, &lockh);
if (!rc) {
"start="LPU64", end="LPU64"\n", inode->i_ino, flock.l_flock.pid,
flags, mode, flock.l_flock.start, flock.l_flock.end);
- obddev = md_get_real_obd(sbi->ll_md_exp, NULL, 0);
+ obddev = md_get_real_obd(sbi->ll_md_exp, &li->lli_id);
rc = ldlm_cli_enqueue(obddev->obd_self_export, NULL,
obddev->obd_namespace,
res_id, LDLM_FLOCK, &flock, mode, &flags,
}
struct obd_device *lmv_get_real_obd(struct obd_export *exp,
- char *name, int len)
+ struct lustre_id *id)
{
struct obd_device *obd = exp->exp_obd;
struct lmv_obd *lmv = &obd->u.lmv;
rc = lmv_check_connect(obd);
if (rc)
RETURN(ERR_PTR(rc));
- obd = lmv->tgts[0].ltd_exp->exp_obd;
+ obd = lmv->tgts[id_group(id)].ltd_exp->exp_obd;
EXIT;
return obd;
RETURN(rc);
}
static struct obd_device *mdc_get_real_obd(struct obd_export *exp,
- char *name, int len)
+ struct lustre_id *id)
{
ENTRY;
RETURN(exp->exp_obd);