diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2019-06-30 16:35:37 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2022-10-14 04:59:38 -0400 |
commit | 29f20baecf850c6381a48ceb57dcefac8e15bd5b (patch) | |
tree | 0436e075bd8499e67ae70887e3b7b1ee6f823394 /fs/bcachefs/ec.c | |
parent | d91a7b6ebca99e6140c913038614f153bc4d4610 (diff) |
bcachefs: Fixes for 4.19bcachefs-v4.19-backport-2.0
Diffstat (limited to 'fs/bcachefs/ec.c')
-rw-r--r-- | fs/bcachefs/ec.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/fs/bcachefs/ec.c b/fs/bcachefs/ec.c index d3fa2d7ae1a2..ab8fdbb61e1c 100644 --- a/fs/bcachefs/ec.c +++ b/fs/bcachefs/ec.c @@ -407,16 +407,13 @@ static void ec_block_io(struct bch_fs *c, struct ec_stripe_buf *buf, this_cpu_add(ca->io_done->sectors[rw][data_type], buf->size); while (offset < bytes) { - unsigned nr_iovecs = min_t(size_t, BIO_MAX_VECS, + unsigned nr_iovecs = min_t(size_t, BIO_MAX_PAGES, DIV_ROUND_UP(bytes, PAGE_SIZE)); unsigned b = min_t(size_t, bytes - offset, nr_iovecs << PAGE_SHIFT); struct ec_bio *ec_bio; - ec_bio = container_of(bio_alloc_bioset(ca->disk_sb.bdev, - nr_iovecs, - rw, - GFP_KERNEL, + ec_bio = container_of(bio_alloc_bioset(GFP_KERNEL, nr_iovecs, &c->ec_bioset), struct ec_bio, bio); @@ -424,6 +421,9 @@ static void ec_block_io(struct bch_fs *c, struct ec_stripe_buf *buf, ec_bio->buf = buf; ec_bio->idx = idx; + bio_set_dev(&ec_bio->bio, ca->disk_sb.bdev); + bio_set_op_attrs(&ec_bio->bio, rw, 0); + ec_bio->bio.bi_iter.bi_sector = ptr->offset + buf->offset + (offset >> 9); ec_bio->bio.bi_end_io = ec_block_endio; ec_bio->bio.bi_private = cl; |