+* maintain OI mapping for ldiskfs-based backend.
+ * reconstruction of the OI mapping after the target (MDT/OST) restored from
+ file-level backup.
+ * generate OI mapping for the MDT upgraded from 1.8.
+ * rebuild OI mapping if some of them lost or crashed.
+* check and repair kinds of namespace related inconsistent issues:
+ * the FID-in-dirent should be consistent with the FID-in-LMA.
+ * the linkEA should be consistent with related name entries.
+ * Dangling name entry: the name entry exists, but related MDT-object does
+ not exist.
+ * Orphan MDT-object: the MDT-object exists, but there is no name entry to
+ reference it.
+ * Multiple-referenced name entry: more than one MDT-objects point back to
+ the same name entry, but the name entry only references one of them.
+ * Unmatched name entry and MDT-object pairs: the name entry references the
+ MDT-object that has no linkEA for back-reference or points back to another
+ name entry that does not exist or does not reference the MDT-object.
+ * Unmatched object types: the file type in the name entry does not match the
+ type that is claimed by the MDT-object.
+ * Invalid nlink count: the MDT-object's nlink count does not match the number
+ of name entries that reference such MDT-object.
+ * Invalid name hash for striped directory: the name hash for the name entry
+ on a shard of a striped directory does not match the index stored in the
+ shard's LMV xattr.
+* verify layout consistency between MDT and OST:
+ * MDT-object with dangling reference: the MDT-object1 claims that the
+ OST-object1 is its child stripe, but on the OST, the OST-object1 does not
+ exist, or it is not materialized (so does not recognize the MDT-object1 as
+ its parent).
+ * Unmatched referenced MDT-object/OST-object pairs: the MDT-object1 claims
+ that the OST-object1 is its child stripe, but the OST-object1 claims that
+ its parent is the MDT-object2 rather than the MDT-object1. On the MDT,
+ the MDT-object2 does not exist, or not recognize the OST-object1 as its
+ child stripe. An additional case exists where the child index stored in
+ the parent layout information does not match the index information stored
+ in the child itself.
+ * Multiple referenced OST-object: the MDT-object1 claims that the OST-object1
+ is its child stripe, but the OST-object1 claims that its parent is the
+ MDT-object2 rather than the MDT-object1. On the other hand, the MDT-object2
+ recognizes the OST-object1 as its child stripe.
+ * Unreferenced (orphan) OST-object: the OST-object1 claims that the
+ MDT-object1 is its parent, but on the MDT, the MDT-object1 does not exist,
+ or it does not recognize the OST-object1 as its child.
+
+
+Parameter Files