diff options
Diffstat (limited to 'libbcachefs/io.c')
-rw-r--r-- | libbcachefs/io.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/libbcachefs/io.c b/libbcachefs/io.c index 44082a0e..0a64f35d 100644 --- a/libbcachefs/io.c +++ b/libbcachefs/io.c @@ -112,7 +112,6 @@ void bch2_submit_wbio_replicas(struct bch_write_bio *wbio, struct bch_fs *c, n->bounce = false; n->split = true; n->put_bio = true; - n->have_io_ref = true; n->bio.bi_opf = wbio->bio.bi_opf; __bio_inc_remaining(n->orig); } else { @@ -127,7 +126,8 @@ void bch2_submit_wbio_replicas(struct bch_write_bio *wbio, struct bch_fs *c, n->bio.bi_iter.bi_sector = ptr->offset; if (likely(percpu_ref_tryget(&ca->io_ref))) { - n->bio.bi_bdev = ca->disk_sb.bdev; + n->have_io_ref = true; + n->bio.bi_bdev = ca->disk_sb.bdev; generic_make_request(&n->bio); } else { n->have_io_ref = false; @@ -315,9 +315,8 @@ static void bch2_write_endio(struct bio *bio) struct bch_dev *ca = wbio->ca; if (bch2_dev_nonfatal_io_err_on(bio->bi_error, ca, - "data write")) { + "data write")) set_closure_fn(cl, bch2_write_io_error, index_update_wq(op)); - } if (wbio->have_io_ref) percpu_ref_put(&ca->io_ref); |