summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikulas Patocka <mpatocka@redhat.com>2022-07-11 16:30:52 -0400
committerMike Snitzer <snitzer@kernel.org>2022-07-14 15:52:32 -0400
commit2c6e755b49d273243431f5f1184654e71221fc78 (patch)
tree2b2e5d478aa4a6ab6989f96b5bd4048326aa1bb6
parent9bc0c92e4b82adb017026dbb2aa816b1ac2bef31 (diff)
downloadlinux-2c6e755b49d273243431f5f1184654e71221fc78.tar.bz2
dm writecache: count number of blocks read, not number of read bios
Change dm-writecache, so that it counts the number of blocks read instead of the number of read bios. Bios can be split and requeued using the dm_accept_partial_bio function, so counting bios caused inaccurate results. Fixes: e3a35d03407c ("dm writecache: add event counters") Reported-by: Yu Kuai <yukuai1@huaweicloud.com> Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Signed-off-by: Mike Snitzer <snitzer@kernel.org>
-rw-r--r--Documentation/admin-guide/device-mapper/writecache.rst4
-rw-r--r--drivers/md/dm-writecache.c1
2 files changed, 3 insertions, 2 deletions
diff --git a/Documentation/admin-guide/device-mapper/writecache.rst b/Documentation/admin-guide/device-mapper/writecache.rst
index 2104812f0281..1fab82408ef1 100644
--- a/Documentation/admin-guide/device-mapper/writecache.rst
+++ b/Documentation/admin-guide/device-mapper/writecache.rst
@@ -80,8 +80,8 @@ Status:
2. the number of blocks
3. the number of free blocks
4. the number of blocks under writeback
-5. the number of read requests
-6. the number of read requests that hit the cache
+5. the number of read blocks
+6. the number of read blocks that hit the cache
7. the number of write requests
8. the number of write requests that hit uncommitted block
9. the number of write requests that hit committed block
diff --git a/drivers/md/dm-writecache.c b/drivers/md/dm-writecache.c
index 9e14717c46a9..a551be5f9b4b 100644
--- a/drivers/md/dm-writecache.c
+++ b/drivers/md/dm-writecache.c
@@ -1365,6 +1365,7 @@ read_next_block:
}
} else {
writecache_map_remap_origin(wc, bio, e);
+ wc->stats.reads += (bio->bi_iter.bi_size - wc->block_size) >> wc->block_size_bits;
map_op = WC_MAP_REMAP_ORIGIN;
}