mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 06:02:05 +00:00
bcache: count backing device I/O error for writeback I/O
Commitc7b7bd0740
("bcache: add io_disable to struct cached_dev") counts backing device I/O requets and set dc->io_disable to true if error counters exceeds dc->io_error_limit. But it only counts I/O errors for regular I/O request, neglects errors of write back I/Os when backing device is offline. This patch counts the errors of writeback I/Os, in dirty_endio() if bio->bi_status is not 0, it means error happens when writing dirty keys to backing device, then bch_count_backing_io_errors() is called. By this fix, even there is no reqular I/O request coming, if writeback I/O errors exceed dc->io_error_limit, the bcache device may still be stopped for the broken backing device. Fixes:c7b7bd0740
("bcache: add io_disable to struct cached_dev") Signed-off-by: Coly Li <colyli@suse.de> Reviewed-by: Hannes Reinecke <hare@suse.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
6147305c73
commit
bf78980fcc
@ -244,8 +244,10 @@ static void dirty_endio(struct bio *bio)
|
||||
struct keybuf_key *w = bio->bi_private;
|
||||
struct dirty_io *io = w->private;
|
||||
|
||||
if (bio->bi_status)
|
||||
if (bio->bi_status) {
|
||||
SET_KEY_DIRTY(&w->key, false);
|
||||
bch_count_backing_io_errors(io->dc, bio);
|
||||
}
|
||||
|
||||
closure_put(&io->cl);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user