*/
 void ldlm_lock2desc(struct ldlm_lock *lock, struct ldlm_lock_desc *desc)
 {
-       struct obd_export *exp = lock->l_export ?: lock->l_conn_export;
-
-       /* INODEBITS_INTEROP: If the other side does not support
-        * inodebits, reply with a plain lock descriptor. */
-       if ((lock->l_resource->lr_type == LDLM_IBITS) &&
-           (exp && !(exp_connect_flags(exp) & OBD_CONNECT_IBITS))) {
-               /* Make sure all the right bits are set in this lock we
-                  are going to pass to client */
-               LASSERTF(lock->l_policy_data.l_inodebits.bits ==
-                        (MDS_INODELOCK_LOOKUP | MDS_INODELOCK_UPDATE |
-                         MDS_INODELOCK_LAYOUT),
-                        "Inappropriate inode lock bits during conversion %llu\n",
-                        lock->l_policy_data.l_inodebits.bits);
-
-               ldlm_res2desc(lock->l_resource, &desc->l_resource);
-               desc->l_resource.lr_type = LDLM_PLAIN;
-
-               /* Convert "new" lock mode to something old client can
-                  understand */
-               if ((lock->l_req_mode == LCK_CR) ||
-                   (lock->l_req_mode == LCK_CW))
-                       desc->l_req_mode = LCK_PR;
-               else
-                       desc->l_req_mode = lock->l_req_mode;
-               if ((lock->l_granted_mode == LCK_CR) ||
-                   (lock->l_granted_mode == LCK_CW)) {
-                       desc->l_granted_mode = LCK_PR;
-               } else {
-                       /* We never grant PW/EX locks to clients */
-                       LASSERT((lock->l_granted_mode != LCK_PW) &&
-                               (lock->l_granted_mode != LCK_EX));
-                       desc->l_granted_mode = lock->l_granted_mode;
-               }
-
-               /* We do not copy policy here, because there is no
-                  policy for plain locks */
-       } else {
-               ldlm_res2desc(lock->l_resource, &desc->l_resource);
-               desc->l_req_mode = lock->l_req_mode;
-               desc->l_granted_mode = lock->l_granted_mode;
-               ldlm_convert_policy_to_wire(lock->l_resource->lr_type,
-                                           &lock->l_policy_data,
-                                           &desc->l_policy_data);
-       }
+       ldlm_res2desc(lock->l_resource, &desc->l_resource);
+       desc->l_req_mode = lock->l_req_mode;
+       desc->l_granted_mode = lock->l_granted_mode;
+       ldlm_convert_policy_to_wire(lock->l_resource->lr_type,
+                                   &lock->l_policy_data,
+                                   &desc->l_policy_data);
 }
 EXPORT_SYMBOL(ldlm_lock2desc);
 
 
                /* for the local lock, add the reference */
                ldlm_lock_addref_internal(lock, einfo->ei_mode);
                ldlm_lock2handle(lock, lockh);
-               if (policy != NULL) {
-                       /* INODEBITS_INTEROP: If the server does not support
-                        * inodebits, we will request a plain lock in the
-                        * descriptor (ldlm_lock2desc() below) but use an
-                        * inodebits lock internally with both bits set.
-                        */
-                       if (einfo->ei_type == LDLM_IBITS &&
-                           !(exp_connect_flags(exp) &
-                             OBD_CONNECT_IBITS))
-                               lock->l_policy_data.l_inodebits.bits =
-                                       MDS_INODELOCK_LOOKUP |
-                                       MDS_INODELOCK_UPDATE;
-                       else
+               if (policy != NULL)
                                lock->l_policy_data = *policy;
-               }
 
                if (einfo->ei_type == LDLM_EXTENT)
                        lock->l_req_extent = policy->l_extent;
 
 
                spin_unlock(&imp->imp_lock);
 
-               if (!ocd->ocd_ibits_known &&
-                   ocd->ocd_connect_flags & OBD_CONNECT_IBITS)
-                       CERROR("Inodebits aware server returned zero compatible"
-                              " bits?\n");
+               if ((imp->imp_connect_flags_orig & OBD_CONNECT_IBITS) &&
+                   !(ocd->ocd_connect_flags & OBD_CONNECT_IBITS)) {
+                       LCONSOLE_WARN("%s: MDS %s does not support ibits "
+                                     "lock, either very old or invalid: "
+                                     "requested %llx, replied %llx\n",
+                                     imp->imp_obd->obd_name,
+                                     imp->imp_connection->c_remote_uuid.uuid,
+                                     imp->imp_connect_flags_orig,
+                                     ocd->ocd_connect_flags);
+                       GOTO(out, rc = -EPROTO);
+               }
 
                if ((ocd->ocd_connect_flags & OBD_CONNECT_VERSION) &&
                    (ocd->ocd_version > LUSTRE_VERSION_CODE +