unsigned long           flags;
        unsigned long           alloced;        /* data pages alloced to file */
        unsigned long           swapped;        /* subtotal assigned to swap */
-       pgoff_t                 fallocend;      /* highest fallocate endindex */
-       struct list_head        shrinklist;     /* shrinkable hpage inodes */
-       struct list_head        swaplist;       /* chain of maybes on swap */
+       union {
+           struct offset_ctx   dir_offsets;    /* stable directory offsets */
+           struct {
+               struct list_head shrinklist;    /* shrinkable hpage inodes */
+               struct list_head swaplist;      /* chain of maybes on swap */
+           };
+       };
+       struct timespec64       i_crtime;       /* file creation time */
        struct shared_policy    policy;         /* NUMA memory alloc policy */
        struct simple_xattrs    xattrs;         /* list of xattrs */
+       pgoff_t                 fallocend;      /* highest fallocate endindex */
+       unsigned int            fsflags;        /* for FS_IOC_[SG]ETFLAGS */
        atomic_t                stop_eviction;  /* hold when working on inode */
-       struct timespec64       i_crtime;       /* file creation time */
-       unsigned int            fsflags;        /* flags for FS_IOC_[SG]ETFLAGS */
 #ifdef CONFIG_TMPFS_QUOTA
        struct dquot            *i_dquot[MAXQUOTAS];
 #endif
-       struct offset_ctx       dir_offsets;    /* stable entry offsets */
        struct inode            vfs_inode;
 };