Are you saying that it would work either way? On Mon, 7 Dec 2020 at 11:12, Ming Lei <ming.lei@xxxxxxxxxx> wrote: > > On Sun, Dec 06, 2020 at 01:18:02PM +0800, Tom Yan wrote: > > While it seems to have worked for so long, it doesn't seem right > > that we set the new bio as the parent. bio_chain() seems to be used > > in the other way everywhere else anyway. > > > > Signed-off-by: Tom Yan <tom.ty89@xxxxxxxxx> > > --- > > block/blk-lib.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/block/blk-lib.c b/block/blk-lib.c > > index e90614fd8d6a..918deaf5c8a4 100644 > > --- a/block/blk-lib.c > > +++ b/block/blk-lib.c > > @@ -15,7 +15,7 @@ struct bio *blk_next_bio(struct bio *bio, unsigned int nr_pages, gfp_t gfp) > > struct bio *new = bio_alloc(gfp, nr_pages); > > > > if (bio) { > > - bio_chain(bio, new); > > + bio_chain(new, bio); > > submit_bio(bio); > > } > > This patch isn't needed. We simply wait for completion of the last issued bio, which > .bi_end_io(submit_bio_wait_endio) is only called after all previous bios are done. > > And the last bio is the ancestor of the whole chained bios, which are > submitted in the following way(order): > > bio 0 ---> bio 1 ---> ... -> bio N(the last bio) > > > thanks, > Ming >