OSDN Git Service

xfs: pack holes in xfs_defer_ops and xfs_trans
authorBrian Foster <bfoster@redhat.com>
Tue, 24 Jul 2018 20:43:11 +0000 (13:43 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Thu, 26 Jul 2018 17:15:13 +0000 (10:15 -0700)
Both structures have holes due to member alignment. Move dop_low to
the end of xfs_defer ops to sanitize the cache line alignment and
move t_flags to save 8 bytes in xfs_trans.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Bill O'Donnell <billodo@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/libxfs/xfs_defer.h
fs/xfs/xfs_trans.h

index 58c979c..8f58f21 100644 (file)
@@ -49,13 +49,14 @@ enum xfs_defer_ops_type {
 #define XFS_DEFER_OPS_NR_BUFS  2       /* join up to two buffers */
 
 struct xfs_defer_ops {
-       bool                    dop_low;        /* alloc in low mode */
        struct list_head        dop_intake;     /* unlogged pending work */
        struct list_head        dop_pending;    /* logged pending work */
 
        /* relog these with each roll */
        struct xfs_inode        *dop_inodes[XFS_DEFER_OPS_NR_INODES];
        struct xfs_buf          *dop_bufs[XFS_DEFER_OPS_NR_BUFS];
+
+       bool                    dop_low;        /* alloc in low mode */
 };
 
 void xfs_defer_add(struct xfs_defer_ops *dop, enum xfs_defer_ops_type type,
index 37fdacc..6f857af 100644 (file)
@@ -102,12 +102,12 @@ typedef struct xfs_trans {
        unsigned int            t_blk_res_used; /* # of resvd blocks used */
        unsigned int            t_rtx_res;      /* # of rt extents resvd */
        unsigned int            t_rtx_res_used; /* # of resvd rt extents used */
+       unsigned int            t_flags;        /* misc flags */
        xfs_fsblock_t           t_firstblock;   /* first block allocated */
        struct xlog_ticket      *t_ticket;      /* log mgr ticket */
        struct xfs_mount        *t_mountp;      /* ptr to fs mount struct */
        struct xfs_dquot_acct   *t_dqinfo;      /* acctg info for dquots */
        struct xfs_defer_ops    *t_dfops;       /* dfops reference */
-       unsigned int            t_flags;        /* misc flags */
        int64_t                 t_icount_delta; /* superblock icount change */
        int64_t                 t_ifree_delta;  /* superblock ifree change */
        int64_t                 t_fdblocks_delta; /* superblock fdblocks chg */