Whamcloud - gitweb
LU-5106 statahead: support striped directory
[fs/lustre-release.git] / lustre / lmv / lmv_obd.c
index 78160ad..f5ff5c7 100644 (file)
@@ -2956,35 +2956,30 @@ int lmv_clear_open_replay_data(struct obd_export *exp,
 int lmv_intent_getattr_async(struct obd_export *exp,
                             struct md_enqueue_info *minfo)
 {
-       struct md_op_data       *op_data = &minfo->mi_data;
-       struct obd_device       *obd = exp->exp_obd;
-       struct lmv_obd          *lmv = &obd->u.lmv;
-       struct lmv_tgt_desc     *ptgt = NULL;
-       struct lmv_tgt_desc     *ctgt = NULL;
-       int                      rc;
+       struct md_op_data *op_data = &minfo->mi_data;
+       struct obd_device *obd = exp->exp_obd;
+       struct lmv_obd *lmv = &obd->u.lmv;
+       struct lmv_tgt_desc *tgt = NULL;
+       int rc;
        ENTRY;
 
        if (!fid_is_sane(&op_data->op_fid2))
                RETURN(-EINVAL);
 
-       ptgt = lmv_locate_mds(lmv, op_data, &op_data->op_fid1);
-       if (IS_ERR(ptgt))
-               RETURN(PTR_ERR(ptgt));
-
-       ctgt = lmv_locate_mds(lmv, op_data, &op_data->op_fid2);
-       if (IS_ERR(ctgt))
-               RETURN(PTR_ERR(ctgt));
+       tgt = lmv_locate_mds(lmv, op_data, &op_data->op_fid1);
+       if (IS_ERR(tgt))
+               RETURN(PTR_ERR(tgt));
 
        /*
-        * if child is on remote MDT, we need 2 async RPCs to fetch both LOOKUP
-        * lock on parent, and UPDATE lock on child MDT, which makes all
-        * complicated. Considering remote dir is rare case, and not supporting
-        * it in statahead won't cause any issue, drop its support for now.
+        * no special handle for remote dir, which needs to fetch both LOOKUP
+        * lock on parent, and then UPDATE lock on child MDT, which makes all
+        * complicated because this is done async. So only LOOKUP lock is
+        * fetched for remote dir, but considering remote dir is rare case,
+        * and not supporting it in statahead won't cause any issue, just leave
+        * it as is.
         */
-       if (ptgt != ctgt)
-               RETURN(-ENOTSUPP);
 
-       rc = md_intent_getattr_async(ptgt->ltd_exp, minfo);
+       rc = md_intent_getattr_async(tgt->ltd_exp, minfo);
        RETURN(rc);
 }