diff options
author | Dave Chinner <dchinner@redhat.com> | 2023-02-13 09:14:55 +1100 |
---|---|---|
committer | Dave Chinner <dchinner@redhat.com> | 2023-02-13 09:14:55 +1100 |
commit | 05cf492a8d01f48d4b8d8f0b93f2d75de7349f12 (patch) | |
tree | 396e61356b85313b0fb861e1403efc16d6f865e3 /fs/xfs/xfs_filestream.c | |
parent | 6b637ad0c7be85ecb795697ea51051039b753da2 (diff) |
xfs: use xfs_bmap_longest_free_extent() in filestreams
The code in xfs_bmap_longest_free_extent() is open coded in
xfs_filestream_pick_ag(). Export xfs_bmap_longest_free_extent and
call it from the filestreams code instead.
Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Diffstat (limited to 'fs/xfs/xfs_filestream.c')
-rw-r--r-- | fs/xfs/xfs_filestream.c | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/fs/xfs/xfs_filestream.c b/fs/xfs/xfs_filestream.c index 7e8b25ab6c46..2eb702034d05 100644 --- a/fs/xfs/xfs_filestream.c +++ b/fs/xfs/xfs_filestream.c @@ -124,17 +124,14 @@ xfs_filestream_pick_ag( trace_xfs_filestream_scan(mp, ip->i_ino, ag); pag = xfs_perag_get(mp, ag); - - if (!xfs_perag_initialised_agf(pag)) { - err = xfs_alloc_read_agf(pag, NULL, trylock, NULL); - if (err) { - if (err != -EAGAIN) { - xfs_perag_put(pag); - return err; - } - /* Couldn't lock the AGF, skip this AG. */ - goto next_ag; - } + longest = 0; + err = xfs_bmap_longest_free_extent(pag, NULL, &longest); + if (err) { + xfs_perag_put(pag); + if (err != -EAGAIN) + return err; + /* Couldn't lock the AGF, skip this AG. */ + goto next_ag; } /* Keep track of the AG with the most free blocks. */ @@ -154,9 +151,6 @@ xfs_filestream_pick_ag( goto next_ag; } - longest = xfs_alloc_longest_free_extent(pag, - xfs_alloc_min_freelist(mp, pag), - xfs_ag_resv_needed(pag, XFS_AG_RESV_NONE)); if (((minlen && longest >= minlen) || (!minlen && pag->pagf_freeblks >= minfree)) && (!xfs_perag_prefers_metadata(pag) || |