Message ID | 20190215144725.8894-8-hch@lst.de (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | [01/10] xfs: remove the io_type field from the writeback context and ioend | expand |
On Fri, Feb 15, 2019 at 03:47:22PM +0100, Christoph Hellwig wrote: > 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. /me wonders if it's really supposed to be the case that we never touch xs_xstrat_split and it stays zero, but as it hasn't done anything since the start of linux.git I'll just set that aside for now and say... > Signed-off-by: Christoph Hellwig <hch@lst.de> > Reviewed-by: Brian Foster <bfoster@redhat.com> ...this by itself seems reasonable to me. Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> --D > --- > fs/xfs/libxfs/xfs_bmap.c | 3 +++ > fs/xfs/xfs_iomap.c | 4 ---- > 2 files changed, 3 insertions(+), 4 deletions(-) > > diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c > index fc4f1d3145c4..4cf83475f0d0 100644 > --- a/fs/xfs/libxfs/xfs_bmap.c > +++ b/fs/xfs/libxfs/xfs_bmap.c > @@ -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); > diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c > index 39be741cac5a..15da53b5fb53 100644 > --- a/fs/xfs/xfs_iomap.c > +++ b/fs/xfs/xfs_iomap.c > @@ -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); > -- > 2.20.1 >
diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c index fc4f1d3145c4..4cf83475f0d0 100644 --- a/fs/xfs/libxfs/xfs_bmap.c +++ b/fs/xfs/libxfs/xfs_bmap.c @@ -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); diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index 39be741cac5a..15da53b5fb53 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c @@ -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);