[SCSI] uas: disable use of blk-mq I/O path
authorChristoph Hellwig <hch@infradead.org>
Fri, 3 Oct 2014 08:47:09 +0000 (01:47 -0700)
committerJames Bottomley <JBottomley@Parallels.com>
Fri, 3 Oct 2014 09:27:58 +0000 (05:27 -0400)
The uas driver uses the block layer tag for USB3 stream IDs.  With
blk-mq we can get larger tag numbers that the queue depth, which breaks
this assumption.  A fix is under way for 3.18, but sits on top of
large changes so can't easily be backported.   Set the disable_blk_mq
path so that a uas device can't easily crash the system when using
blk-mq for SCSI.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/usb/storage/uas.c

index 3f42785f653c09585d5e6a0461bbb03044b7677d..9bfa7252f7f914ec666706fd80f4bd932f5a74d5 100644 (file)
@@ -970,6 +970,13 @@ static struct scsi_host_template uas_host_template = {
        .cmd_per_lun = 1,       /* until we override it */
        .skip_settle_delay = 1,
        .ordered_tag = 1,
+
+       /*
+        * The uas drivers expects tags not to be bigger than the maximum
+        * per-device queue depth, which is not true with the blk-mq tag
+        * allocator.
+        */
+       .disable_blk_mq = true,
 };
 
 #define UNUSUAL_DEV(id_vendor, id_product, bcdDeviceMin, bcdDeviceMax, \