+ OBD_ALLOC_PTR(op_data);
+ if (op_data == NULL)
+ GOTO(out, rc = -ENOMEM);
+
+ op_data->op_fid1 = body->fid1;
+ op_data->op_bias = MDS_CROSS_REF;
+
+ CDEBUG(D_INODE,
+ "REMOTE_INTENT with fid="DFID" -> mds #%d\n",
+ PFID(&body->fid1), tgt->ltd_idx);
+
+ it->d.lustre.it_disposition &= ~DISP_ENQ_COMPLETE;
+ rc = md_intent_lock(tgt->ltd_exp, op_data, lmm, lmmsize, it,
+ flags, &req, cb_blocking, extra_lock_flags);
+ if (rc)
+ GOTO(out_free_op_data, rc);
+
+ /*
+ * LLite needs LOOKUP lock to track dentry revocation in order to
+ * maintain dcache consistency. Thus drop UPDATE lock here and put
+ * LOOKUP in request.
+ */
+ if (it->d.lustre.it_lock_mode != 0) {
+ ldlm_lock_decref((void *)&it->d.lustre.it_lock_handle,
+ it->d.lustre.it_lock_mode);
+ it->d.lustre.it_lock_mode = 0;