[dm-devel] dm-mq and end_clone_request()
Mike Snitzer
snitzer at redhat.com
Tue Aug 2 17:45:34 UTC 2016
On Mon, Aug 01 2016 at 6:41pm -0400,
Bart Van Assche <bart.vanassche at sandisk.com> wrote:
> On 08/01/2016 01:46 PM, Mike Snitzer wrote:
> > Please retry both variant (CONFIG_DM_MQ_DEFAULT=y first) with this patch
> > applied. Interested to see if things look better for you (WARN_ON_ONCEs
> > added just to see if we hit the corresponding suspend/stopped state
> > while mapping requests -- if so this speaks to an inherently racy
> > problem that will need further investigation for a proper fix but
> > results from this should let us know if we're closer).
> >
> > diff --git a/drivers/md/dm.c b/drivers/md/dm.c
> > index 1b2f962..0e0f6e0 100644
> > --- a/drivers/md/dm.c
> > +++ b/drivers/md/dm.c
> > @@ -2007,6 +2007,9 @@ static int map_request(struct dm_rq_target_io *tio, struct request *rq,
> > struct dm_target *ti = tio->ti;
> > struct request *clone = NULL;
> >
> > + if (WARN_ON_ONCE(unlikely(dm_suspended_md(md))))
> > + return DM_MAPIO_REQUEUE;
> > +
> > if (tio->clone) {
> > clone = tio->clone;
> > r = ti->type->map_rq(ti, clone, &tio->info);
> > @@ -2722,6 +2725,9 @@ static int dm_mq_queue_rq(struct blk_mq_hw_ctx *hctx,
> > dm_put_live_table(md, srcu_idx);
> > }
> >
> > + if (WARN_ON_ONCE(unlikely(test_bit(BLK_MQ_S_STOPPED, &hctx->state))))
> > + return BLK_MQ_RQ_QUEUE_BUSY;
> > +
> > if (ti->type->busy && ti->type->busy(ti))
> > return BLK_MQ_RQ_QUEUE_BUSY;
>
> Hello Mike,
>
> The test results with this patch and also the three other patches that
> have been posted in the context of this e-mail thread applied on top of
> kernel v4.7 are as follows:
Hi Bart,
Please do these same tests against a v4.7 kernel with the 4 patches from
this branch applied (no need for your other debug patches):
https://git.kernel.org/cgit/linux/kernel/git/device-mapper/linux-dm.git/log/?h=dm-4.7-mpath-fixes
I've had good results with my blk-mq SRP based testing.
Thanks,
Mike
More information about the dm-devel
mailing list