Message ID | 20190211125427.16577-8-hch@lst.de (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | [01/10] xfs: remove the io_type field from the writeback context and ioend | expand |
On Mon, Feb 11, 2019 at 01:54:24PM +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. > > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- I'm a little confused over what the original xs_xstrat_quick was supposed to be (and the counter names aren't very helpful). We'd only bump it once we completed an allocation that covered the associated writeback. This changes that behavior to bump it for every allocation, which seems more useful to me: Reviewed-by: Brian Foster <bfoster@redhat.com> > 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 d9d66e1856d7..dc3f0608377d 100644 > --- a/fs/xfs/libxfs/xfs_bmap.c > +++ b/fs/xfs/libxfs/xfs_bmap.c > @@ -4513,6 +4513,9 @@ xfs_bmapi_convert_delalloc( > 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)); > ASSERT(bma.got.br_startblock || XFS_IS_REALTIME_INODE(ip)); > *imap = bma.got; > 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 d9d66e1856d7..dc3f0608377d 100644 --- a/fs/xfs/libxfs/xfs_bmap.c +++ b/fs/xfs/libxfs/xfs_bmap.c @@ -4513,6 +4513,9 @@ xfs_bmapi_convert_delalloc( 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)); ASSERT(bma.got.br_startblock || XFS_IS_REALTIME_INODE(ip)); *imap = bma.got; 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);
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. Signed-off-by: Christoph Hellwig <hch@lst.de> --- fs/xfs/libxfs/xfs_bmap.c | 3 +++ fs/xfs/xfs_iomap.c | 4 ---- 2 files changed, 3 insertions(+), 4 deletions(-)