+is valid. The 'ocd_ibits_known' flags determine the handling of
+locks on MDS inodes. The OBD_CONNECT_IBITS flag was introduced in
+Lustre 1.4 and is mandatory for MDS_CONNECT RPCs. See also the discussion
+of inodes and extended attributes.
+[[mds-inode-bits-locks]]
+
+----
+#define MDS_INODELOCK_LOOKUP 0x000001 /* For namespace, dentry etc, and also
+ * was used to protect permission (mode,
+ * owner, group etc) before 2.4. */
+#define MDS_INODELOCK_UPDATE 0x000002 /* size, links, timestamps */
+#define MDS_INODELOCK_OPEN 0x000004 /* For opened files */
+#define MDS_INODELOCK_LAYOUT 0x000008 /* for layout */
+#define MDS_INODELOCK_PERM 0x000010 /* separate permission bits */
+#define MDS_INODELOCK_XATTR 0x000020 /* extended attributes */
+----
+
+//////////////////////////////////////////////////////////////////////
+/* The PERM bit is added int 2.4, and it is used to protect permission(mode,
+ * owner, group, acl etc), so to separate the permission from LOOKUP lock.
+ * Because for remote directories(in DNE), these locks will be granted by
+ * different MDTs(different ldlm namespace).
+ *
+ * For local directory, MDT will always grant UPDATE_LOCK|PERM_LOCK together.
+ * For Remote directory, the master MDT, where the remote directory is, will
+ * grant UPDATE_LOCK|PERM_LOCK, and the remote MDT, where the name entry is,
+ * will grant LOOKUP_LOCK. */
+#define MDS_INODELOCK_PERM 0x000010
+#define MDS_INODELOCK_XATTR 0x000020 /* extended attributes */
+//////////////////////////////////////////////////////////////////////