dm: only initialize the request_queue once
authorChristoph Hellwig <hch@lst.de>
Thu, 30 Apr 2015 14:10:36 +0000 (10:10 -0400)
committerMike Snitzer <snitzer@redhat.com>
Thu, 30 Apr 2015 14:25:21 +0000 (10:25 -0400)
commit3e6180f0c82b3790a9ec6d13d67aae359bf1ce84
treec4abf15202b194c0762f97af185e4b40387413ac
parentb787f68c36d49bb1d9236f403813641efa74a031
dm: only initialize the request_queue once

Commit bfebd1cdb4 ("dm: add full blk-mq support to request-based DM")
didn't properly account for the need to short-circuit re-initializing
DM's blk-mq request_queue if it was already initialized.

Otherwise, reloading a blk-mq request-based DM table (either manually
or via multipathd) resulted in errors, see:
 https://www.redhat.com/archives/dm-devel/2015-April/msg00132.html

Fix is to only initialize the request_queue on the initial table load
(when the mapped_device type is assigned).

This is better than having dm_init_request_based_blk_mq_queue() return
early if the queue was already initialized because it elevates the
constraint to a more meaningful location in DM core.  As such the
pre-existing early return in dm_init_request_based_queue() can now be
removed.

Fixes: bfebd1cdb4 ("dm: add full blk-mq support to request-based DM")
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-ioctl.c
drivers/md/dm.c