summaryrefslogtreecommitdiffstats
path: root/drivers/md/dm-mpath.c
diff options
context:
space:
mode:
authorMike Snitzer <snitzer@redhat.com>2016-01-31 17:22:27 -0500
committerMike Snitzer <snitzer@redhat.com>2016-02-22 11:06:22 -0500
commit16f122661dbb3dfefc60788b528b54ad702005aa (patch)
tree500f1868d0342e7d61eeb86337d0120532d37d78 /drivers/md/dm-mpath.c
parentf083b09b7819c785db4f82a81f68da3bccfb04bf (diff)
downloadlinux-16f122661dbb3dfefc60788b528b54ad702005aa.tar.gz
linux-16f122661dbb3dfefc60788b528b54ad702005aa.tar.bz2
linux-16f122661dbb3dfefc60788b528b54ad702005aa.zip
dm: optimize dm_mq_queue_rq()
DM multipath is the only dm-mq target. But that aside, request-based DM only supports tables with a single target that is immutable. Leverage this fact in dm_mq_queue_rq() by using the 'immutable_target' stored in the mapped_device when the table was made active. This saves the need to even take the read-side of the SRCU via dm_{get,put}_live_table. If the active DM table does not have an immutable target (e.g. "error" target was swapped in) then fallback to the slow-path where the target is looked up from the live table. Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'drivers/md/dm-mpath.c')
-rw-r--r--drivers/md/dm-mpath.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
index cfa29f574c2a..3ddaa11584ef 100644
--- a/drivers/md/dm-mpath.c
+++ b/drivers/md/dm-mpath.c
@@ -1684,7 +1684,8 @@ out:
*---------------------------------------------------------------*/
static struct target_type multipath_target = {
.name = "multipath",
- .version = {1, 10, 0},
+ .version = {1, 11, 0},
+ .features = DM_TARGET_SINGLETON | DM_TARGET_IMMUTABLE,
.module = THIS_MODULE,
.ctr = multipath_ctr,
.dtr = multipath_dtr,