From: Brian Foster Date: Fri, 5 Oct 2018 02:35:54 +0000 (-0500) Subject: xfs: add firstblock field to xfs_trans X-Git-Tag: v4.19.0-rc0~69 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=255682d931bb7a9a2f46ff22d013c53904e81c5f;p=thirdparty%2Fxfsprogs-dev.git xfs: add firstblock field to xfs_trans Source kernel commit: bba59c5e4b38e160c6be25b2f4fe36ebc84f53df A firstblock var is typically allocated and initialized along with xfs_defer_ops structures and passed around independent from the associated transaction. To facilitate combining the two, add an optional ->t_firstblock field to xfs_trans that can be used in place of an on-stack variable. The firstblock value follows the lifetime of the transaction, so initialize it on allocation and when a transaction rolls. Signed-off-by: Brian Foster Reviewed-by: Christoph Hellwig Reviewed-by: Darrick J. Wong Signed-off-by: Darrick J. Wong Signed-off-by: Eric Sandeen --- diff --git a/include/xfs_trans.h b/include/xfs_trans.h index 3cabf3d23..1ad4e958d 100644 --- a/include/xfs_trans.h +++ b/include/xfs_trans.h @@ -65,6 +65,7 @@ typedef struct xfs_trans { unsigned int t_log_res; /* amt of log space resvd */ unsigned int t_log_count; /* count for perm log res */ unsigned int t_blk_res; /* # of blocks resvd */ + xfs_fsblock_t t_firstblock; /* first block allocated */ struct xfs_mount *t_mountp; /* ptr to fs mount struct */ unsigned int t_blk_res_used; /* # of resvd blocks used */ unsigned int t_flags; /* misc flags */ diff --git a/libxfs/trans.c b/libxfs/trans.c index 2fef72914..bee4a761c 100644 --- a/libxfs/trans.c +++ b/libxfs/trans.c @@ -146,6 +146,7 @@ xfs_trans_dup( */ ntp->t_mountp = tp->t_mountp; INIT_LIST_HEAD(&ntp->t_items); + ntp->t_firstblock = NULLFSBLOCK; ASSERT(tp->t_flags & XFS_TRANS_PERM_LOG_RES); @@ -257,6 +258,7 @@ libxfs_trans_alloc( (flags & XFS_TRANS_NOFS) ? KM_NOFS : KM_SLEEP); tp->t_mountp = mp; INIT_LIST_HEAD(&tp->t_items); + tp->t_firstblock = NULLFSBLOCK; error = xfs_trans_reserve(tp, resp, blocks, rtextents); if (error) {