On Fri, Nov 30, 2018 at 01:54:26AM -0800, Christoph Hellwig wrote: > > diff --git a/include/linux/bio.h b/include/linux/bio.h > > index 62715a5a4f32..8bc9d9b29fd3 100644 > > --- a/include/linux/bio.h > > +++ b/include/linux/bio.h > > @@ -486,6 +486,12 @@ extern unsigned int bvec_nr_vecs(unsigned short idx); > > extern const char *bio_devname(struct bio *bio, char *buffer); > > > > #define bio_set_dev(bio, bdev) \ > > +do { \ > > + bio_set_dev_only(bio, bdev); \ > > + bio_associate_blkg(bio); \ > > +} while (0) > > + > > +#define bio_set_dev_only(bio, bdev) \ > > This lacks any explanation on when you would use bio_set_dev_only or > bio_set_dev. Please document why we need both and why you'd choose or > the other. I realized after thinking about this more and checking more use cases that it isn't as simple as swapping macro uses because many of the callers share common bio allocation paths. I think the simplest way forward is to have writeback and swap do reassociation and split out bio init code in a future series. So in v5, there is only bio_set_dev(). Thanks, Dennis