diff options
-rw-r--r-- | fs/xfs/libxfs/xfs_bmap.c | 12 | ||||
-rw-r--r-- | fs/xfs/xfs_bmap_util.c | 7 | ||||
-rw-r--r-- | fs/xfs/xfs_inode.c | 5 | ||||
-rw-r--r-- | fs/xfs/xfs_reflink.c | 11 | ||||
-rw-r--r-- | fs/xfs/xfs_symlink.c | 6 |
5 files changed, 15 insertions, 26 deletions
diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c index 6f9b2cddb933..572c8d0c40db 100644 --- a/fs/xfs/libxfs/xfs_bmap.c +++ b/fs/xfs/libxfs/xfs_bmap.c @@ -6132,17 +6132,9 @@ xfs_bmap_finish_one( xfs_filblks_t *blockcount, xfs_exntst_t state) { - xfs_fsblock_t firstfsb; int error = 0; - /* - * firstfsb is tied to the transaction lifetime and is used to - * ensure correct AG locking order and schedule work item - * continuations. XFS_BUI_MAX_FAST_EXTENTS (== 1) restricts us - * to only making one bmap call per transaction, so it should - * be safe to have it as a local variable here. - */ - firstfsb = NULLFSBLOCK; + ASSERT(tp->t_firstblock == NULLFSBLOCK); trace_xfs_bmap_deferred(tp->t_mountp, XFS_FSB_TO_AGNO(tp->t_mountp, startblock), type, @@ -6165,7 +6157,7 @@ xfs_bmap_finish_one( break; case XFS_BMAP_UNMAP: error = __xfs_bunmapi(tp, ip, startoff, blockcount, - XFS_BMAPI_REMAP, 1, &firstfsb); + XFS_BMAPI_REMAP, 1, &tp->t_firstblock); break; default: ASSERT(0); diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c index dd563f4a82e8..0b2b52854061 100644 --- a/fs/xfs/xfs_bmap_util.c +++ b/fs/xfs/xfs_bmap_util.c @@ -1024,7 +1024,6 @@ xfs_unmap_extent( struct xfs_mount *mp = ip->i_mount; struct xfs_trans *tp; struct xfs_defer_ops dfops; - xfs_fsblock_t firstfsb; uint resblks = XFS_DIOSTRAT_SPACE_RES(mp, 0); int error; @@ -1042,9 +1041,9 @@ xfs_unmap_extent( xfs_trans_ijoin(tp, ip, 0); - xfs_defer_init(tp, &dfops, &firstfsb); - error = xfs_bunmapi(tp, ip, startoffset_fsb, len_fsb, 0, 2, &firstfsb, - done); + xfs_defer_init(tp, &dfops, &tp->t_firstblock); + error = xfs_bunmapi(tp, ip, startoffset_fsb, len_fsb, 0, 2, + &tp->t_firstblock, done); if (error) goto out_bmap_cancel; diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index ab1fd696500c..3cdfd795a50c 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -1543,7 +1543,6 @@ xfs_itruncate_extents_flags( struct xfs_trans *tp = *tpp; struct xfs_defer_ops *odfops = tp->t_dfops; struct xfs_defer_ops dfops; - xfs_fsblock_t first_block; xfs_fileoff_t first_unmap_block; xfs_fileoff_t last_block; xfs_filblks_t unmap_len; @@ -1580,9 +1579,9 @@ xfs_itruncate_extents_flags( ASSERT(first_unmap_block < last_block); unmap_len = last_block - first_unmap_block + 1; while (!done) { - xfs_defer_init(tp, &dfops, &first_block); + xfs_defer_init(tp, &dfops, &tp->t_firstblock); error = xfs_bunmapi(tp, ip, first_unmap_block, unmap_len, flags, - XFS_ITRUNC_MAX_EXTENTS, &first_block, + XFS_ITRUNC_MAX_EXTENTS, &tp->t_firstblock, &done); if (error) goto out_bmap_cancel; diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c index d0397622be9f..83c02f6b1d02 100644 --- a/fs/xfs/xfs_reflink.c +++ b/fs/xfs/xfs_reflink.c @@ -627,7 +627,6 @@ xfs_reflink_end_cow( struct xfs_trans *tp; xfs_fileoff_t offset_fsb; xfs_fileoff_t end_fsb; - xfs_fsblock_t firstfsb; struct xfs_defer_ops dfops; int error; unsigned int resblks; @@ -695,10 +694,10 @@ xfs_reflink_end_cow( goto prev_extent; /* Unmap the old blocks in the data fork. */ - xfs_defer_init(tp, &dfops, &firstfsb); + xfs_defer_init(tp, &dfops, &tp->t_firstblock); rlen = del.br_blockcount; error = __xfs_bunmapi(tp, ip, del.br_startoff, &rlen, 0, 1, - &firstfsb); + &tp->t_firstblock); if (error) goto out_defer; @@ -1002,7 +1001,6 @@ xfs_reflink_remap_extent( struct xfs_mount *mp = ip->i_mount; bool real_extent = xfs_bmap_is_real_extent(irec); struct xfs_trans *tp; - xfs_fsblock_t firstfsb; unsigned int resblks; struct xfs_defer_ops dfops; struct xfs_bmbt_irec uirec; @@ -1045,8 +1043,9 @@ xfs_reflink_remap_extent( /* Unmap the old blocks in the data fork. */ rlen = unmap_len; while (rlen) { - xfs_defer_init(tp, &dfops, &firstfsb); - error = __xfs_bunmapi(tp, ip, destoff, &rlen, 0, 1, &firstfsb); + xfs_defer_init(tp, &dfops, &tp->t_firstblock); + error = __xfs_bunmapi(tp, ip, destoff, &rlen, 0, 1, + &tp->t_firstblock); if (error) goto out_defer; diff --git a/fs/xfs/xfs_symlink.c b/fs/xfs/xfs_symlink.c index 583ca83353f7..18d9b4d301e5 100644 --- a/fs/xfs/xfs_symlink.c +++ b/fs/xfs/xfs_symlink.c @@ -400,7 +400,6 @@ xfs_inactive_symlink_rmt( xfs_buf_t *bp; int done; int error; - xfs_fsblock_t first_block; struct xfs_defer_ops dfops; int i; xfs_mount_t *mp; @@ -440,7 +439,7 @@ xfs_inactive_symlink_rmt( * Find the block(s) so we can inval and unmap them. */ done = 0; - xfs_defer_init(tp, &dfops, &first_block); + xfs_defer_init(tp, &dfops, &tp->t_firstblock); nmaps = ARRAY_SIZE(mval); error = xfs_bmapi_read(ip, 0, xfs_symlink_blocks(mp, size), mval, &nmaps, 0); @@ -462,7 +461,8 @@ xfs_inactive_symlink_rmt( /* * Unmap the dead block(s) to the dfops. */ - error = xfs_bunmapi(tp, ip, 0, size, 0, nmaps, &first_block, &done); + error = xfs_bunmapi(tp, ip, 0, size, 0, nmaps, &tp->t_firstblock, + &done); if (error) goto error_bmap_cancel; ASSERT(done); |