dm writecache: count number of blocks discarded, not number of discard bios
authorMikulas Patocka <mpatocka@redhat.com>
Mon, 11 Jul 2022 20:31:52 +0000 (16:31 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 Aug 2022 12:23:13 +0000 (14:23 +0200)
[ Upstream commit 2ee73ef60db4d79b9f9b8cd501e8188b5179449f ]

Change dm-writecache, so that it counts the number of blocks discarded
instead of the number of discard bios. Make it consistent with the
read and write statistics counters that were changed to count the
number of blocks instead of bios.

Fixes: e3a35d03407c ("dm writecache: add event counters")
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Documentation/admin-guide/device-mapper/writecache.rst
drivers/md/dm-writecache.c

index 6c9a2c74df8a0aca58afd1e2bf96efd721d76115..724e028d1858b81ddd4046ad1c9d30acc0c2edf6 100644 (file)
@@ -87,7 +87,7 @@ Status:
 11. the number of write blocks that are allocated in the cache
 12. the number of write requests that are blocked on the freelist
 13. the number of flush requests
-14. the number of discard requests
+14. the number of discarded blocks
 
 Messages:
        flush
index c90408eb9c3a1b00ce9d5959e53d4b40140d519e..c3e59d8af76f94185a638fee896d032151283cb4 100644 (file)
@@ -1513,7 +1513,7 @@ static enum wc_map_op writecache_map_flush(struct dm_writecache *wc, struct bio
 
 static enum wc_map_op writecache_map_discard(struct dm_writecache *wc, struct bio *bio)
 {
-       wc->stats.discards++;
+       wc->stats.discards += bio->bi_iter.bi_size >> wc->block_size_bits;
 
        if (writecache_has_error(wc))
                return WC_MAP_ERROR;