diff --git a/lustre/mdc/mdc_request.c b/lustre/mdc/mdc_request.c
index 3994916f5fab9a105d5766fab52de62e1e65bcb9..02888bba224d41407f1129afb41e3b259591252e 100644
--- a/lustre/mdc/mdc_request.c
+++ b/lustre/mdc/mdc_request.c
@@ -1351,7 +1351,6 @@ struct obd_ops mdc_obd_ops = {
 struct md_ops mdc_md_ops = {
         .m_getstatus     = mdc_getstatus,
         .m_getattr       = mdc_getattr,
-        .m_change_cbdata = mdc_change_cbdata,
         .m_close         = mdc_close,
         .m_create        = mdc_create,
         .m_done_writing  = mdc_done_writing,
diff --git a/lustre/mds/handler.c b/lustre/mds/handler.c
index 87e49993a1b89d09982e6af3c795692258aec03d..68cf8bd4a81fcd4905a0180ba99e576e8a4660bc 100644
--- a/lustre/mds/handler.c
+++ b/lustre/mds/handler.c
@@ -2600,7 +2600,7 @@ static int mds_intent_policy(struct ldlm_namespace *ns,
         struct ldlm_intent *it;
         struct mds_obd *mds = &req->rq_export->exp_obd->u.mds;
         struct ldlm_reply *rep;
-        struct lustre_handle lockh = { 0 };
+        struct lustre_handle lockh[2] = {{0}, {0}};
         struct ldlm_lock *new_lock;
         int getattr_part = MDS_INODELOCK_UPDATE;
         int rc, repsize[4] = { sizeof(struct ldlm_reply),
@@ -2637,7 +2637,7 @@ static int mds_intent_policy(struct ldlm_namespace *ns,
         intent_set_disposition(rep, DISP_IT_EXECD);
 
         fixup_handle_for_resent_req(req, MDS_REQ_INTENT_LOCKREQ_OFF,
-                                    lock, &lockh);
+                                    lock, lockh);
 
         /* execute policy */
         switch ((long)it->opc) {
@@ -2645,7 +2645,7 @@ static int mds_intent_policy(struct ldlm_namespace *ns,
         case IT_CREAT|IT_OPEN:
                 /* XXX swab here to assert that an mds_open reint
                  * packet is following */
-                rep->lock_policy_res2 = mds_reint(req, offset, &lockh);
+                rep->lock_policy_res2 = mds_reint(req, offset, lockh);
 #if 0
                 /* We abort the lock if the lookup was negative and
                  * we did not make it to the OPEN portion */
@@ -2656,7 +2656,7 @@ static int mds_intent_policy(struct ldlm_namespace *ns,
 #endif
                 /* IT_OPEN may return lock on cross-node dentry
                  * that we want to hold during attr retrival -bzzz */
-                if (rc != 0 || lockh.cookie == 0)
+                if (rc != 0 || lockh[0].cookie == 0)
                         RETURN(ELDLM_LOCK_ABORTED);
                 break;
         case IT_LOOKUP:
@@ -2665,7 +2665,7 @@ static int mds_intent_policy(struct ldlm_namespace *ns,
         case IT_GETATTR:
                 getattr_part |= MDS_INODELOCK_LOOKUP;
         case IT_READDIR:
-                rep->lock_policy_res2 = mds_getattr_name(req, offset, &lockh,
+                rep->lock_policy_res2 = mds_getattr_name(req, offset, lockh,
                                                          getattr_part);
                 /* FIXME: LDLM can set req->rq_status. MDS sets
                    policy_res{1,2} with disposition and status.
@@ -2683,7 +2683,7 @@ static int mds_intent_policy(struct ldlm_namespace *ns,
                 }
                 break;
         case IT_UNLINK:
-                rc = mds_lock_and_check_slave(offset, req, &lockh);
+                rc = mds_lock_and_check_slave(offset, req, lockh);
                 if ((rep->lock_policy_res2 = rc)) {
                         if (rc == ENOLCK)
                                 rep->lock_policy_res2 = 0;
@@ -2701,7 +2701,7 @@ static int mds_intent_policy(struct ldlm_namespace *ns,
          * drop it below anyways because lock replay is done separately by the
          * client afterwards.  For regular RPCs we want to give the new lock to
          * the client instead of whatever lock it was about to get. */
-        new_lock = ldlm_handle2lock(&lockh);
+        new_lock = ldlm_handle2lock(&lockh[0]);
         if (new_lock == NULL && (flags & LDLM_FL_INTENT_ONLY))
                 RETURN(0);