dm: add full blk-mq support to request-based DM
authorMike Snitzer <snitzer@redhat.com>
Sun, 8 Mar 2015 05:51:47 +0000 (00:51 -0500)
committerMike Snitzer <snitzer@redhat.com>
Wed, 15 Apr 2015 16:10:16 +0000 (12:10 -0400)
commitbfebd1cdb497a57757c83f5fbf1a29931591e2a4
treec4ca9675ad22a45eb6e36b130db0d65d574dd2b3
parent0ce65797a77ee780f62909d3128bf08b9735718b
dm: add full blk-mq support to request-based DM

Commit e5863d9ad ("dm: allocate requests in target when stacking on
blk-mq devices") served as the first step toward fully utilizing blk-mq
in request-based DM -- it enabled stacking an old-style (request_fn)
request_queue ontop of the underlying blk-mq device(s).  That first step
didn't improve performance of DM multipath ontop of fast blk-mq devices
(e.g. NVMe) because the top-level old-style request_queue was severely
limited by the queue_lock.

The second step offered here enables stacking a blk-mq request_queue
ontop of the underlying blk-mq device(s).  This unlocks significant
performance gains on fast blk-mq devices, Keith Busch tested on his NVMe
testbed and offered this really positive news:

 "Just providing a performance update. All my fio tests are getting
  roughly equal performance whether accessed through the raw block
  device or the multipath device mapper (~470k IOPS). I could only push
  ~20% of the raw iops through dm before this conversion, so this latest
  tree is looking really solid from a performance standpoint."

Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Tested-by: Keith Busch <keith.busch@intel.com>
drivers/md/dm-mpath.c
drivers/md/dm-table.c
drivers/md/dm.c
include/uapi/linux/dm-ioctl.h