SCSI fixes for 3.17-rc7
Subsystems (5)
James Bottomley
maintainerThis is a set of two small fixes, both to code which went in during the merge window: cxgb4i has a scheduling in atomic bug in its new ipv6 code and uas fails to work properly with the new scsi-mq code.
The patch is available here:
git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git scsi-fixes
The short changelog is:
Anish Bhatt (1):
cxgb4i: avoid holding mutex in interrupt context
Christoph Hellwig (1):
uas: disable use of blk-mq I/O path
And the diffstat
drivers/scsi/cxgbi/cxgb4i/cxgb4i.c | 2 +- drivers/scsi/cxgbi/libcxgbi.c | 57 ++++++++++++++++++++++++++++++++++---- drivers/scsi/cxgbi/libcxgbi.h | 3 ++ drivers/usb/storage/uas.c | 7 +++++ 4 files changed, 62 insertions(+), 7 deletions(-)
With full diff below.
James
---
drivers/scsi/cxgbi/cxgb4i/cxgb4i.c +1 -1
@@ -1647,7 +1647,7 @@ static int cxgbi_inet6addr_handler(struct notifier_block *this,if (event_dev->priv_flags &IFF_802_1Q_VLAN ) event_dev =vlan_dev_real_dev (event_dev); - cdev =cxgbi_device_find_by_netdev (event_dev,NULL ); + cdev =cxgbi_device_find_by_netdev_rcu (event_dev,NULL );if (!cdev)return ret;
drivers/scsi/cxgbi/libcxgbi.c +51 -6
96 lines not on this page · raw message
drivers/scsi/cxgbi/libcxgbi.h +3 -0
@@ -527,6 +527,7 @@ struct cxgbi_ports_map {#define CXGBI_FLAG_IPV4_SET 0x10struct cxgbi_device {struct list_head list_head; +struct list_head rcu_node;unsigned int flags;struct net_device **ports;void *lldev;
@@ -709,6 +710,8 @@ void cxgbi_device_unregister(struct cxgbi_device *);void cxgbi_device_unregister_all (unsigned int flag);struct cxgbi_device *cxgbi_device_find_by_lldev (void *);struct cxgbi_device *cxgbi_device_find_by_netdev (struct net_device *,int *); +struct cxgbi_device *cxgbi_device_find_by_netdev_rcu (struct net_device *, +int *);int cxgbi_hbas_add (struct cxgbi_device *,u64 ,unsigned int ,struct scsi_host_template *,struct scsi_transport_template *);
drivers/usb/storage/uas.c +7 -0
@@ -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, \