]> git.baikalelectronics.ru Git - kernel.git/commit
bcache: fix bio_{start,end}_io_acct with proper device
authorColy Li <colyli@suse.de>
Sat, 25 Jul 2020 12:00:39 +0000 (20:00 +0800)
committerJens Axboe <axboe@kernel.dk>
Sat, 25 Jul 2020 13:38:21 +0000 (07:38 -0600)
commit39a80fb123033c430a72f05f408f3e0627603e26
treee66e47a1c79a051ee9d69221df1b6b253a31ff49
parentb1919adb6af17a2f4a186d7f7ddb0c638f5fdac8
bcache: fix bio_{start,end}_io_acct with proper device

Commit cad57657b772 ("bcache: use bio_{start,end}_io_acct") moves the
io account code to the location after bio_set_dev(bio, dc->bdev) in
cached_dev_make_request(). Then the account is performed incorrectly on
backing device, indeed the I/O should be counted to bcache device like
/dev/bcache0.

With the mistaken I/O account, iostat does not display I/O counts for
bcache device and all the numbers go to backing device. In writeback
mode, the hard drive may have 340K+ IOPS which is impossible and wrong
for spinning disk.

This patch introduces bch_bio_start_io_acct() and bch_bio_end_io_acct(),
which switches bio->bi_disk to bcache device before calling
bio_start_io_acct() or bio_end_io_acct(). Now the I/Os are counted to
bcache device, and bcache device, cache device and backing device have
their correct I/O count information back.

Fixes: cad57657b772 ("bcache: use bio_{start,end}_io_acct")
Signed-off-by: Coly Li <colyli@suse.de>
Cc: Christoph Hellwig <hch@lst.de>
Cc: stable@vger.kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/md/bcache/request.c