block group */
        __le32 h_fs_generation;         /* Must match super block */
        __le64 h_blkno;                 /* Offset on disk, in blocks */
-/*20*/ __le64 h_reserved3;
+/*20*/ __le64 h_suballoc_loc;          /* Suballocator block group this
+                                          eb belongs to.  Only valid
+                                          if allocated from a
+                                          discontiguous block group */
        __le64 h_next_leaf_blk;         /* Offset on disk, in blocks,
                                           of next leaf header pointing
                                           to data */
 /*80*/ struct ocfs2_block_check i_check;       /* Error checking */
 /*88*/ __le64 i_dx_root;               /* Pointer to dir index root block */
 /*90*/ __le64 i_refcount_loc;
-       __le64 i_reserved2[4];
+       __le64 i_suballoc_loc;          /* Suballocator block group this
+                                          inode belongs to.  Only valid
+                                          if allocated from a
+                                          discontiguous block group */
+/*A0*/ __le64 i_reserved2[3];
 /*B8*/ union {
                __le64 i_pad1;          /* Generic way to refer to this
                                           64bit union */
        __le32          dr_reserved2;
        __le64          dr_free_blk;            /* Pointer to head of free
                                                 * unindexed block list. */
-       __le64          dr_reserved3[15];
+       __le64          dr_suballoc_loc;        /* Suballocator block group
+                                                  this root belongs to.
+                                                  Only valid if allocated
+                                                  from a discontiguous
+                                                  block group */
+       __le64          dr_reserved3[14];
        union {
                struct ocfs2_extent_list dr_list; /* Keep this aligned to 128
                                                   * bits for maximum space
 /*40*/ __le32 rf_generation;           /* generation number. all be the same
                                         * for the same refcount tree. */
        __le32 rf_reserved0;
-       __le64 rf_reserved1[7];
+       __le64 rf_suballoc_loc;         /* Suballocator block group this
+                                          refcount block belongs to. Only
+                                          valid if allocated from a
+                                          discontiguous block group */
+/*50*/ __le64 rf_reserved1[6];
 /*80*/ union {
                struct ocfs2_refcount_list rf_records;  /* List of refcount
                                                          records */
                                        real xattr or a xattr tree. */
        __le16  xb_reserved0;
        __le32  xb_reserved1;
-       __le64  xb_reserved2;
+       __le64  xb_suballoc_loc;        /* Suballocator block group this
+                                          xattr block belongs to. Only
+                                          valid if allocated from a
+                                          discontiguous block group */
 /*30*/ union {
                struct ocfs2_xattr_header xb_header; /* xattr header if this
                                                        block contains xattr */