On Thu, Apr 30 2015 at 4:23am -0400, Christoph Hellwig <hch@xxxxxx> wrote: > On Thu, Apr 30, 2015 at 09:22:00AM +0200, Christoph Hellwig wrote: > > Well - we're obviously trying to reinitialize it here and only error > > out very low level with your patch. What I mean is that we shouldn't > > even try to reinitialize it at a much higher level, so we don't need > > this blk-mq specific hack down here. OK, understood. > FYI, this fixes the isssue for me and seems to be "more correct" at > a higher level: Yeah, I like this. Means the early return in dm_init_request_based_queue() can be removed too. > --- > From: Christoph Hellwig <hch@xxxxxx> > Subject: [PATCH] dm: only initialize request_queue once > > We should only inіnitialize the request_queue on the initial table load when > we assing the device type. "assing" ;) Will fix up and also add that this patch fixes the issue you reported, thanks. > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > > diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c > index c8a18e4..de92662 100644 > --- a/drivers/md/dm-ioctl.c > +++ b/drivers/md/dm-ioctl.c > @@ -1298,21 +1298,22 @@ static int table_load(struct dm_ioctl *param, size_t param_size) > goto err_unlock_md_type; > } > > - if (dm_get_md_type(md) == DM_TYPE_NONE) > + if (dm_get_md_type(md) == DM_TYPE_NONE) { > /* Initial table load: acquire type of table. */ > dm_set_md_type(md, dm_table_get_type(t)); > - else if (dm_get_md_type(md) != dm_table_get_type(t)) { > + > + /* setup md->queue to reflect md's type (may block) */ > + r = dm_setup_md_queue(md); > + if (r) { > + DMWARN("unable to set up device queue for new table."); > + goto err_unlock_md_type; > + } > + } else if (dm_get_md_type(md) != dm_table_get_type(t)) { > DMWARN("can't change device type after initial table load."); > r = -EINVAL; > goto err_unlock_md_type; > } > > - /* setup md->queue to reflect md's type (may block) */ > - r = dm_setup_md_queue(md); > - if (r) { > - DMWARN("unable to set up device queue for new table."); > - goto err_unlock_md_type; > - } > dm_unlock_md_type(md); > > /* stage inactive table */ -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel