Re: [PATCH] block: save page offset gaps in cloned bio
Eric Auger <[email protected]>
| Newsgroups | org.kernel.vger.linux-block |
|---|---|
| Message-ID | <[email protected]> |
Hi Keith, On 8/17/26 6:59 PM, Keith Busch wrote: > From: Keith Busch <[email protected]> > > The cloned bio needs to inherit the accumulated gaps between vectors so > that we can know if this bio can subscribe to the iova coalescing > optimization. The split remainder meanwhile can reset its gaps to 0 > since it advanced beyond it and will start accounting from there. > > Fixes: 2f6b2565d43c ("block: accumulate memory segment gaps per bio") > Reported-by: Eric Auger <[email protected]> > Signed-off-by: Keith Busch <[email protected]> Tested-by: Eric Auger <[email protected]> Many Thanks! Eric > --- > block/bio.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/block/bio.c b/block/bio.c > index 898b2f5ef8c81..33aa439c1bae2 100644 > --- a/block/bio.c > +++ b/block/bio.c > @@ -859,6 +859,7 @@ static int __bio_clone(struct bio *bio, struct bio *bio_src, gfp_t gfp) > bio->bi_ioprio = bio_src->bi_ioprio; > bio->bi_write_hint = bio_src->bi_write_hint; > bio->bi_write_stream = bio_src->bi_write_stream; > + bio->bi_bvec_gap_bit = bio_src->bi_bvec_gap_bit; > bio->bi_iter = bio_src->bi_iter; > bio->bi_io_vec = bio_src->bi_io_vec; > > @@ -1971,6 +1972,7 @@ struct bio *bio_split(struct bio *bio, int sectors, > bio_integrity_trim(split); > > bio_advance(bio, split->bi_iter.bi_size); > + bio->bi_bvec_gap_bit = 0; > > if (bio_flagged(bio, BIO_TRACE_COMPLETION)) > bio_set_flag(split, BIO_TRACE_COMPLETION);