diff options
| author | Darrick J. Wong <[email protected]> | 2018-07-30 05:37:08 +0000 |
|---|---|---|
| committer | Darrick J. Wong <[email protected]> | 2018-07-30 05:37:08 +0000 |
| commit | ebcbef3a61a6081ffe20b0b684f18ebbf23f1dfb (patch) | |
| tree | d9b30678acfa6dc5e99944a4e7dc5fca6f09f2a9 /fs/xfs/libxfs/xfs_refcount_btree.c | |
| parent | xfs: remove deprecated barrier/nobarrier mount (diff) | |
| download | kernel-ebcbef3a61a6081ffe20b0b684f18ebbf23f1dfb.tar.gz kernel-ebcbef3a61a6081ffe20b0b684f18ebbf23f1dfb.zip | |
xfs: pass transaction lock while setting up agresv on cyclic metadata
Pass a tranaction pointer through to all helpers that calculate the
per-AG block reservation. Online repair will use this to reinitialize
per-ag reservations while it still holds all the AG headers locked to
the repair transaction.
Signed-off-by: Darrick J. Wong <[email protected]>
Reviewed-by: Brian Foster <[email protected]>
Diffstat (limited to 'fs/xfs/libxfs/xfs_refcount_btree.c')
| -rw-r--r-- | fs/xfs/libxfs/xfs_refcount_btree.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/xfs/libxfs/xfs_refcount_btree.c b/fs/xfs/libxfs/xfs_refcount_btree.c index 26d2300ed865..1aaa01c97517 100644 --- a/fs/xfs/libxfs/xfs_refcount_btree.c +++ b/fs/xfs/libxfs/xfs_refcount_btree.c @@ -404,6 +404,7 @@ xfs_refcountbt_max_size( int xfs_refcountbt_calc_reserves( struct xfs_mount *mp, + struct xfs_trans *tp, xfs_agnumber_t agno, xfs_extlen_t *ask, xfs_extlen_t *used) @@ -418,14 +419,14 @@ xfs_refcountbt_calc_reserves( return 0; - error = xfs_alloc_read_agf(mp, NULL, agno, 0, &agbp); + error = xfs_alloc_read_agf(mp, tp, agno, 0, &agbp); if (error) return error; agf = XFS_BUF_TO_AGF(agbp); agblocks = be32_to_cpu(agf->agf_length); tree_len = be32_to_cpu(agf->agf_refcount_blocks); - xfs_buf_relse(agbp); + xfs_trans_brelse(tp, agbp); *ask += xfs_refcountbt_max_size(mp, agblocks); *used += tree_len; |
