- rc = md_intent_lock(lmv->tgts[mds].exp, uctxt, &rpfid, name, len,
- lmm, lmmsize, cfid, it, flags, reqp, cb_blocking);
-
- lmv_put_obj(obj);
+ rc = md_intent_lock(lmv->tgts[mds].ltd_exp, uctxt, &rpfid, name,
+ len, lmm, lmmsize, cfid, it, flags, reqp,
+ cb_blocking);
+ if (rc == -ERESTART) {
+ /* directory got splitted. time to update local object
+ * and repeat the request with proper MDS */
+ LASSERT(fid_equal(pfid, &rpfid));
+ rc = lmv_get_mea_and_update_object(exp, &rpfid);
+ if (rc == 0) {
+ ptlrpc_req_finished(*reqp);
+ goto repeat;
+ }
+ }