RETURN(rc);
if (ma->ma_valid & MA_LMV) {
- struct lu_buf *buf;
int stripe;
OBD_ALLOC(ma->ma_lmv, ma->ma_lmv_size);
RETURN(-ENOMEM);
/* get LMV EA */
- buf = cmm_buf_get(env, ma->ma_lmv, ma->ma_lmv_size);
- rc = mo_xattr_get(env, md_object_next(mp), buf,
- MDS_LMV_MD_NAME);
+ ma->ma_need = MA_INODE | MA_LMV;
+ rc = mo_attr_get(env, mp, ma);
if (rc)
RETURN(rc);
int extra_lock_flags)
{
struct obd_device *obd = exp->exp_obd;
+ struct obd_export *tgt_exp;
struct lu_fid rpid = op_data->fid1;
struct lmv_obd *lmv = &obd->u.lmv;
struct mdt_body *body = NULL;
struct lmv_stripe_md *mea;
struct lmv_obj *obj;
int rc, loop = 0;
- mdsno_t mds;
ENTRY;
OBD_ALLOC_PTR(sop_data);
repeat:
LASSERT(++loop <= 2);
- rc = lmv_fld_lookup(lmv, &rpid, &mds);
- if (rc)
- GOTO(out_free_sop_data, rc);
-
obj = lmv_obj_grab(obd, &rpid);
if (obj) {
int mea_idx;
op_data->namelen);
rpid = obj->lo_inodes[mea_idx].li_fid;
- rc = lmv_fld_lookup(lmv, &rpid, &mds);
lmv_obj_put(obj);
- if (rc)
- GOTO(out_free_sop_data, rc);
-
- CDEBUG(D_OTHER, "forward to MDS #"LPU64" ("DFID")\n",
- mds, PFID(&rpid));
+ CDEBUG(D_OTHER, "Choose slave dir ("DFID")\n", PFID(&rpid));
}
+ tgt_exp = lmv_get_export(lmv, &rpid);
+ if (IS_ERR(tgt_exp))
+ GOTO(out_free_sop_data, rc = PTR_ERR(tgt_exp));
+
sop_data->fid1 = rpid;
- rc = md_intent_lock(lmv->tgts[mds].ltd_exp, sop_data,
- lmm, lmmsize, it, flags, reqp,
- cb_blocking, extra_lock_flags);
+ rc = md_intent_lock(tgt_exp, sop_data, lmm, lmmsize, it, flags,
+ reqp, cb_blocking, extra_lock_flags);
if (rc == -ERESTART) {
/*