mirror of https://gitee.com/openkylin/linux.git
xfs: move stat accounting to xfs_bmapi_convert_delalloc
This way we can actually count how many bytes got converted and how many calls we need, unlike in the caller which doesn't have the detailed view. Note that this includes a slight change in behavior as the xs_xstrat_quick is now bumped for every allocation instead of just the one covering the requested writeback offset, which makes a lot more sense. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Brian Foster <bfoster@redhat.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
This commit is contained in:
parent
491ce61e93
commit
125851ac92
|
@ -4516,6 +4516,9 @@ xfs_bmapi_convert_delalloc(
|
|||
if (WARN_ON_ONCE(!bma.got.br_startblock && !XFS_IS_REALTIME_INODE(ip)))
|
||||
goto out_finish;
|
||||
|
||||
XFS_STATS_ADD(mp, xs_xstrat_bytes, XFS_FSB_TO_B(mp, bma.length));
|
||||
XFS_STATS_INC(mp, xs_xstrat_quick);
|
||||
|
||||
ASSERT(!isnullstartblock(bma.got.br_startblock));
|
||||
*imap = bma.got;
|
||||
*seq = READ_ONCE(ifp->if_seq);
|
||||
|
|
|
@ -707,9 +707,6 @@ xfs_iomap_write_allocate(
|
|||
map_start_fsb = imap->br_startoff;
|
||||
map_count_fsb = imap->br_blockcount;
|
||||
|
||||
XFS_STATS_ADD(mp, xs_xstrat_bytes,
|
||||
XFS_FSB_TO_B(mp, imap->br_blockcount));
|
||||
|
||||
while (true) {
|
||||
/*
|
||||
* Allocate in a loop because it may take several attempts to
|
||||
|
@ -741,7 +738,6 @@ xfs_iomap_write_allocate(
|
|||
if ((offset_fsb >= imap->br_startoff) &&
|
||||
(offset_fsb < (imap->br_startoff +
|
||||
imap->br_blockcount))) {
|
||||
XFS_STATS_INC(mp, xs_xstrat_quick);
|
||||
xfs_trim_extent(imap, map_start_fsb, map_count_fsb);
|
||||
ASSERT(offset_fsb >= imap->br_startoff &&
|
||||
offset_fsb < imap->br_startoff + imap->br_blockcount);
|
||||
|
|
Loading…
Reference in New Issue