bcache: put bch_bio_map() back to correct location in journal_write_unlocked()
Commita7c50c9404
("block: pass a block_device and opf to bio_reset") moves bch_bio_map() inside journal_write_unlocked() next to the location where the modified bio_reset() was called. This change is wrong because calling bch_bio_map() immediately after bio_reset(), a BUG_ON(!bio->bi_iter.bi_size) inside bch_bio_map() will be triggered and panic the kernel. This patch puts bch_bio_map() back to its original correct location in journal_write_unlocked() and avoid the BUG_ON(). Fixes:a7c50c9404
("block: pass a block_device and opf to bio_reset") Signed-off-by: Coly Li <colyli@suse.de> Cc: Christoph Hellwig <hch@lst.de> Cc: Chaitanya Kulkarni <kch@nvidia.com> Link: https://lore.kernel.org/r/20220419160425.4148-2-colyli@suse.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
89a2ee91ed
commit
ff2695e52c
@ -771,12 +771,12 @@ static void journal_write_unlocked(struct closure *cl)
|
||||
|
||||
bio_reset(bio, ca->bdev, REQ_OP_WRITE |
|
||||
REQ_SYNC | REQ_META | REQ_PREFLUSH | REQ_FUA);
|
||||
bch_bio_map(bio, w->data);
|
||||
bio->bi_iter.bi_sector = PTR_OFFSET(k, i);
|
||||
bio->bi_iter.bi_size = sectors << 9;
|
||||
|
||||
bio->bi_end_io = journal_write_endio;
|
||||
bio->bi_private = w;
|
||||
bch_bio_map(bio, w->data);
|
||||
|
||||
trace_bcache_journal_write(bio, w->data->keys);
|
||||
bio_list_add(&list, bio);
|
||||
|
Loading…
Reference in New Issue
Block a user