The 10/23/2020 13:31, Hannes Reinecke wrote: > On 10/23/20 11:13 AM, hch@xxxxxxxxxxxxx wrote: > > On Thu, Oct 22, 2020 at 01:54:16PM -0400, Mike Snitzer wrote: > >> On Thu, Oct 22, 2020 at 11:14 AM Darrick J. Wong > >>> Stupid question: Why don't you change the block layer to make it > >>> possible to insert device mapper devices after the blockdev has been set > >>> up? > >> > >> Not a stupid question. Definitely something that us DM developers > >> have wanted to do for a while. Devil is in the details but it is the > >> right way forward. > >> > > > > Yes, I think that is the right thing to do. And I don't think it should > > be all that hard. All we'd need in the I/O path is something like the > > pseudo-patch below, which will allow the interposer driver to resubmit > > bios using submit_bio_noacct as long as the driver sets BIO_INTERPOSED. > > > > diff --git a/block/blk-core.c b/block/blk-core.c > > index ac00d2fa4eb48d..3f6f1eb565e0a8 100644 > > --- a/block/blk-core.c > > +++ b/block/blk-core.c > > @@ -1051,6 +1051,9 @@ blk_qc_t submit_bio_noacct(struct bio *bio) > > return BLK_QC_T_NONE; > > } > > > > + if (blk_has_interposer(bio->bi_disk) && > > + !(bio->bi_flags & BIO_INTERPOSED)) > > + return __submit_bio_interposed(bio); > > if (!bio->bi_disk->fops->submit_bio) > > return __submit_bio_noacct_mq(bio); > > return __submit_bio_noacct(bio); > > It`s will be great! Approximately this interception capability is not enough now. > My thoughts went more into the direction of hooking into ->submit_bio, > seeing that it's a NULL pointer for most (all?) block drivers. > > But sure, I'll check how the interposer approach would turn out. If anyone will do the patch blk-interposer, please add me to CC. I will try to offer my module that will use blk-interposer. -- Sergei Shtepa Veeam Software developer.