dm table: fix 'all_blk_mq' inconsistency when an empty table is loaded
authorMike Snitzer <snitzer@redhat.com>
Wed, 23 Nov 2016 18:51:09 +0000 (13:51 -0500)
committerMike Snitzer <snitzer@redhat.com>
Thu, 8 Dec 2016 19:12:52 +0000 (14:12 -0500)
commit6936c12cf809850180b24947271b8f068fdb15e9
treebd761b5f771b2c79b445814772e955cd97d43606
parent6599c84e4ce6e428180f9958c7c40aa4202d8072
dm table: fix 'all_blk_mq' inconsistency when an empty table is loaded

An earlier DM multipath table could have been build ontop of underlying
devices that were all using blk-mq.  In that case, if that active
multipath table is replaced with an empty DM multipath table (that
reflects all paths have failed) then it is important that the
'all_blk_mq' state of the active table is transfered to the new empty DM
table.  Otherwise dm-rq.c:dm_old_prep_tio() will incorrectly clone a
request that isn't needed by the DM multipath target when it is to issue
IO to an underlying blk-mq device.

Fixes: e83068a5 ("dm mpath: add optional "queue_mode" feature")
Cc: stable@vger.kernel.org # 4.8+
Reported-by: Bart Van Assche <bart.vanassche@sandisk.com>
Tested-by: Bart Van Assche <bart.vanassche@sandisk.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-table.c