Whamcloud - gitweb
LU-5707 lfsck: store namespace LFSCK statistics info in new EA
[fs/lustre-release.git] / lustre / include / lustre / lustre_idl.h
index 9d4663a..26da4c3 100644 (file)
@@ -1086,12 +1086,12 @@ static inline struct lu_dirent *lu_dirent_next(struct lu_dirent *ent)
         return next;
 }
 
-static inline int lu_dirent_calc_size(int namelen, __u16 attr)
+static inline size_t lu_dirent_calc_size(size_t namelen, __u16 attr)
 {
-        int size;
+       size_t size;
 
-        if (attr & LUDA_TYPE) {
-                const unsigned align = sizeof(struct luda_type) - 1;
+       if (attr & LUDA_TYPE) {
+               const size_t align = sizeof(struct luda_type) - 1;
                 size = (sizeof(struct lu_dirent) + namelen + align) & ~align;
                 size += sizeof(struct luda_type);
         } else
@@ -1100,15 +1100,6 @@ static inline int lu_dirent_calc_size(int namelen, __u16 attr)
         return (size + 7) & ~7;
 }
 
-static inline int lu_dirent_size(const struct lu_dirent *ent)
-{
-        if (le16_to_cpu(ent->lde_reclen) == 0) {
-                return lu_dirent_calc_size(le16_to_cpu(ent->lde_namelen),
-                                           le32_to_cpu(ent->lde_attrs));
-        }
-        return le16_to_cpu(ent->lde_reclen);
-}
-
 #define MDS_DIR_END_OFF 0xfffffffffffffffeULL
 
 /**
@@ -1579,6 +1570,8 @@ enum obdo_flags {
 #define LOV_MAGIC_JOIN_V1      (0x0BD20000 | LOV_MAGIC_MAGIC)
 #define LOV_MAGIC_V3           (0x0BD30000 | LOV_MAGIC_MAGIC)
 #define LOV_MAGIC_MIGRATE      (0x0BD40000 | LOV_MAGIC_MAGIC)
+/* reserved for specifying OSTs */
+#define LOV_MAGIC_SPECIFIC     (0x0BD50000 | LOV_MAGIC_MAGIC)
 #define LOV_MAGIC              LOV_MAGIC_V1
 
 /*
@@ -1709,8 +1702,13 @@ static inline void lmm_oi_cpu_to_le(struct ost_id *dst_oi,
 #define XATTR_NAME_VERSION      "trusted.version"
 #define XATTR_NAME_SOM         "trusted.som"
 #define XATTR_NAME_HSM         "trusted.hsm"
-#define XATTR_NAME_LFSCK_NAMESPACE "trusted.lfsck_namespace"
 #define XATTR_NAME_LFSCK_BITMAP "trusted.lfsck_bitmap"
+
+#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2, 8, 53, 0)
+# define XATTR_NAME_LFSCK_NAMESPACE_OLD "trusted.lfsck_namespace"
+#endif
+
+#define XATTR_NAME_LFSCK_NAMESPACE "trusted.lfsck_ns"
 #define XATTR_NAME_MAX_LEN     32 /* increase this, if there is longer name. */
 
 struct lov_mds_md_v3 {            /* LOV EA mds/wire data (little-endian) */
@@ -2757,6 +2755,11 @@ struct lmv_mds_md_v1 {
 #define LMV_HASH_FLAG_DEAD     0x40000000
 #define LMV_HASH_FLAG_BAD_TYPE 0x20000000
 
+/* The striped directory has ever lost its master LMV EA, then LFSCK
+ * re-generated it. This flag is used to indicate such case. It is an
+ * on-disk flag. */
+#define LMV_HASH_FLAG_LOST_LMV 0x10000000
+
 /**
  * The FNV-1a hash algorithm is as follows:
  *     hash = FNV_offset_basis
@@ -2964,6 +2967,8 @@ struct ldlm_extent {
         __u64 gid;
 };
 
+#define LDLM_GID_ANY  ((__u64) -1)
+
 static inline int ldlm_extent_overlap(const struct ldlm_extent *ex1,
                                      const struct ldlm_extent *ex2)
 {
@@ -3563,7 +3568,7 @@ struct lfsck_request {
        struct lu_fid   lr_fid2;
        union {
                struct lu_fid   lr_fid3;
-               char            lr_pool_name[LOV_MAXPOOLNAME];
+               char            lr_pool_name[LOV_MAXPOOLNAME + 1];
        };
        __u32           lr_stripe_count;
        __u32           lr_hash_type;
@@ -3595,12 +3600,16 @@ enum lfsck_events {
        LE_CREATE_ORPHAN        = 12,
        LE_SKIP_NLINK_DECLARE   = 13,
        LE_SKIP_NLINK           = 14,
+       LE_SET_LMV_MASTER       = 15,
+       LE_SET_LMV_SLAVE        = 16,
 };
 
 enum lfsck_event_flags {
        LEF_TO_OST              = 0x00000001,
        LEF_FROM_OST            = 0x00000002,
        LEF_SET_LMV_HASH        = 0x00000004,
+       LEF_SET_LMV_ALL         = 0x00000008,
+       LEF_RECHECK_NAME_HASH   = 0x00000010,
 };
 
 static inline void lustre_set_wire_obdo(const struct obd_connect_data *ocd,
@@ -3671,6 +3680,8 @@ extern void lustre_swab_lov_user_md_v3(struct lov_user_md_v3 *lum);
 extern void lustre_swab_lov_user_md_objects(struct lov_user_ost_data *lod,
                                             int stripe_count);
 extern void lustre_swab_lov_mds_md(struct lov_mds_md *lmm);
+void lustre_print_user_md(unsigned int level, struct lov_user_md *lum,
+                         const char *msg);
 
 /* llog_swab.c */
 extern void lustre_swab_llogd_body (struct llogd_body *d);
@@ -3907,6 +3918,14 @@ struct getinfo_fid2path {
 
 void lustre_swab_fid2path (struct getinfo_fid2path *gf);
 
+/** path2parent request/reply structures */
+struct getparent {
+       struct lu_fid   gp_fid;         /**< parent FID */
+       __u32           gp_linkno;      /**< hardlink number */
+       __u32           gp_name_size;   /**< size of the name field */
+       char            gp_name[0];     /**< zero-terminated link name */
+} __attribute__((packed));
+
 enum {
         LAYOUT_INTENT_ACCESS    = 0,
         LAYOUT_INTENT_READ      = 1,