• Eric Sandeen's avatar
    ext4: naturally align struct ext4_allocation_request · 726447d8
    Eric Sandeen authored
    As Ted noted, the ext4_allocation_request isn't well aligned.  Looking
    at it with pahole we're wasting space on 64-bit arches:
    
    struct ext4_allocation_request {
            struct inode *             inode;              /*     0     8 */
            ext4_lblk_t                logical;            /*     8     4 */
    
            /* XXX 4 bytes hole, try to pack */
    
            ext4_fsblk_t               goal;               /*    16     8 */
            ext4_lblk_t                lleft;              /*    24     4 */
    
            /* XXX 4 bytes hole, try to pack */
    
            ext4_fsblk_t               pleft;              /*    32     8 */
            ext4_lblk_t                lright;             /*    40     4 */
    
            /* XXX 4 bytes hole, try to pack */
    
            ext4_fsblk_t               pright;             /*    48     8 */
            unsigned int               len;                /*    56     4 */
            unsigned int               flags;              /*    60     4 */
            /* --- cacheline 1 boundary (64 bytes) --- */
    
            /* size: 64, cachelines: 1, members: 9 */
            /* sum members: 52, holes: 3, sum holes: 12 */
    };
    
    Grouping 32-bit members together closes these holes and shrinks the
    structure by 12 bytes. which is important since ext4 can get on the
    hairy edge of stack overruns.
    Signed-off-by: default avatarEric Sandeen <sandeen@redhat.com>
    Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
    726447d8
ext4.h 58.3 KB