diff options
Diffstat (limited to 'drivers/scsi')
-rw-r--r-- | drivers/scsi/Makefile | 2 | ||||
-rw-r--r-- | drivers/scsi/be2iscsi/be_main.c | 2 | ||||
-rw-r--r-- | drivers/scsi/cxgbi/cxgb3i/Kconfig | 4 | ||||
-rw-r--r-- | drivers/scsi/cxgbi/cxgb4i/Kconfig | 4 | ||||
-rw-r--r-- | drivers/scsi/cxgbi/libcxgbi.c | 21 | ||||
-rw-r--r-- | drivers/scsi/fcoe/fcoe.c | 4 | ||||
-rw-r--r-- | drivers/scsi/ipr.c | 9 | ||||
-rw-r--r-- | drivers/scsi/libsas/sas_ata.c | 94 | ||||
-rw-r--r-- | drivers/scsi/libsas/sas_scsi_host.c | 14 | ||||
-rw-r--r-- | drivers/scsi/megaraid/megaraid_sas_fp.c | 1 | ||||
-rw-r--r-- | drivers/scsi/megaraid/megaraid_sas_fusion.c | 1 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_os.c | 2 | ||||
-rw-r--r-- | drivers/scsi/scsi_lib.c | 2 | ||||
-rw-r--r-- | drivers/scsi/scsi_priv.h | 2 | ||||
-rw-r--r-- | drivers/scsi/scsi_sysfs.c | 2 | ||||
-rw-r--r-- | drivers/scsi/scsi_tgt_lib.c | 2 | ||||
-rw-r--r-- | drivers/scsi/scsi_transport_fc.c | 2 |
17 files changed, 119 insertions, 49 deletions
diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile index 2e9a87e8e7d8..ef6de669424b 100644 --- a/drivers/scsi/Makefile +++ b/drivers/scsi/Makefile | |||
@@ -165,7 +165,7 @@ scsi_mod-$(CONFIG_SCSI_NETLINK) += scsi_netlink.o | |||
165 | scsi_mod-$(CONFIG_SYSCTL) += scsi_sysctl.o | 165 | scsi_mod-$(CONFIG_SYSCTL) += scsi_sysctl.o |
166 | scsi_mod-$(CONFIG_SCSI_PROC_FS) += scsi_proc.o | 166 | scsi_mod-$(CONFIG_SCSI_PROC_FS) += scsi_proc.o |
167 | scsi_mod-y += scsi_trace.o | 167 | scsi_mod-y += scsi_trace.o |
168 | scsi_mod-$(CONFIG_PM_OPS) += scsi_pm.o | 168 | scsi_mod-$(CONFIG_PM) += scsi_pm.o |
169 | 169 | ||
170 | scsi_tgt-y += scsi_tgt_lib.o scsi_tgt_if.o | 170 | scsi_tgt-y += scsi_tgt_lib.o scsi_tgt_if.o |
171 | 171 | ||
diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c index 79cefbe31367..638c72b7f94a 100644 --- a/drivers/scsi/be2iscsi/be_main.c +++ b/drivers/scsi/be2iscsi/be_main.c | |||
@@ -4277,7 +4277,7 @@ static int __devinit beiscsi_dev_probe(struct pci_dev *pcidev, | |||
4277 | 4277 | ||
4278 | snprintf(phba->wq_name, sizeof(phba->wq_name), "beiscsi_q_irq%u", | 4278 | snprintf(phba->wq_name, sizeof(phba->wq_name), "beiscsi_q_irq%u", |
4279 | phba->shost->host_no); | 4279 | phba->shost->host_no); |
4280 | phba->wq = create_workqueue(phba->wq_name); | 4280 | phba->wq = alloc_workqueue(phba->wq_name, WQ_MEM_RECLAIM, 1); |
4281 | if (!phba->wq) { | 4281 | if (!phba->wq) { |
4282 | shost_printk(KERN_ERR, phba->shost, "beiscsi_dev_probe-" | 4282 | shost_printk(KERN_ERR, phba->shost, "beiscsi_dev_probe-" |
4283 | "Failed to allocate work queue\n"); | 4283 | "Failed to allocate work queue\n"); |
diff --git a/drivers/scsi/cxgbi/cxgb3i/Kconfig b/drivers/scsi/cxgbi/cxgb3i/Kconfig index 5cf4e9831f1b..11dff23f7838 100644 --- a/drivers/scsi/cxgbi/cxgb3i/Kconfig +++ b/drivers/scsi/cxgbi/cxgb3i/Kconfig | |||
@@ -1,6 +1,8 @@ | |||
1 | config SCSI_CXGB3_ISCSI | 1 | config SCSI_CXGB3_ISCSI |
2 | tristate "Chelsio T3 iSCSI support" | 2 | tristate "Chelsio T3 iSCSI support" |
3 | depends on CHELSIO_T3_DEPENDS | 3 | depends on PCI && INET |
4 | select NETDEVICES | ||
5 | select NETDEV_10000 | ||
4 | select CHELSIO_T3 | 6 | select CHELSIO_T3 |
5 | select SCSI_ISCSI_ATTRS | 7 | select SCSI_ISCSI_ATTRS |
6 | ---help--- | 8 | ---help--- |
diff --git a/drivers/scsi/cxgbi/cxgb4i/Kconfig b/drivers/scsi/cxgbi/cxgb4i/Kconfig index bb94b39b17b3..d5302c27f377 100644 --- a/drivers/scsi/cxgbi/cxgb4i/Kconfig +++ b/drivers/scsi/cxgbi/cxgb4i/Kconfig | |||
@@ -1,6 +1,8 @@ | |||
1 | config SCSI_CXGB4_ISCSI | 1 | config SCSI_CXGB4_ISCSI |
2 | tristate "Chelsio T4 iSCSI support" | 2 | tristate "Chelsio T4 iSCSI support" |
3 | depends on CHELSIO_T4_DEPENDS | 3 | depends on PCI && INET |
4 | select NETDEVICES | ||
5 | select NETDEV_10000 | ||
4 | select CHELSIO_T4 | 6 | select CHELSIO_T4 |
5 | select SCSI_ISCSI_ATTRS | 7 | select SCSI_ISCSI_ATTRS |
6 | ---help--- | 8 | ---help--- |
diff --git a/drivers/scsi/cxgbi/libcxgbi.c b/drivers/scsi/cxgbi/libcxgbi.c index d2ad3d676724..a24dff9f9163 100644 --- a/drivers/scsi/cxgbi/libcxgbi.c +++ b/drivers/scsi/cxgbi/libcxgbi.c | |||
@@ -451,26 +451,13 @@ static struct cxgbi_sock *cxgbi_sock_create(struct cxgbi_device *cdev) | |||
451 | } | 451 | } |
452 | 452 | ||
453 | static struct rtable *find_route_ipv4(__be32 saddr, __be32 daddr, | 453 | static struct rtable *find_route_ipv4(__be32 saddr, __be32 daddr, |
454 | __be16 sport, __be16 dport, u8 tos) | 454 | __be16 sport, __be16 dport, u8 tos) |
455 | { | 455 | { |
456 | struct rtable *rt; | 456 | struct rtable *rt; |
457 | struct flowi fl = { | ||
458 | .oif = 0, | ||
459 | .nl_u = { | ||
460 | .ip4_u = { | ||
461 | .daddr = daddr, | ||
462 | .saddr = saddr, | ||
463 | .tos = tos } | ||
464 | }, | ||
465 | .proto = IPPROTO_TCP, | ||
466 | .uli_u = { | ||
467 | .ports = { | ||
468 | .sport = sport, | ||
469 | .dport = dport } | ||
470 | } | ||
471 | }; | ||
472 | 457 | ||
473 | if (ip_route_output_flow(&init_net, &rt, &fl, NULL, 0)) | 458 | rt = ip_route_output_ports(&init_net, NULL, daddr, saddr, |
459 | dport, sport, IPPROTO_TCP, tos, 0); | ||
460 | if (IS_ERR(rt)) | ||
474 | return NULL; | 461 | return NULL; |
475 | 462 | ||
476 | return rt; | 463 | return rt; |
diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c index 9f9600b67001..3becc6a20a4f 100644 --- a/drivers/scsi/fcoe/fcoe.c +++ b/drivers/scsi/fcoe/fcoe.c | |||
@@ -285,9 +285,7 @@ static int fcoe_interface_setup(struct fcoe_interface *fcoe, | |||
285 | } | 285 | } |
286 | 286 | ||
287 | /* Do not support for bonding device */ | 287 | /* Do not support for bonding device */ |
288 | if ((netdev->priv_flags & IFF_MASTER_ALB) || | 288 | if (netdev->priv_flags & IFF_BONDING && netdev->flags & IFF_MASTER) { |
289 | (netdev->priv_flags & IFF_SLAVE_INACTIVE) || | ||
290 | (netdev->priv_flags & IFF_MASTER_8023AD)) { | ||
291 | FCOE_NETDEV_DBG(netdev, "Bonded interfaces not supported\n"); | 289 | FCOE_NETDEV_DBG(netdev, "Bonded interfaces not supported\n"); |
292 | return -EOPNOTSUPP; | 290 | return -EOPNOTSUPP; |
293 | } | 291 | } |
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c index 9c5c8be72231..d841e98a8bd5 100644 --- a/drivers/scsi/ipr.c +++ b/drivers/scsi/ipr.c | |||
@@ -6219,11 +6219,10 @@ static struct ata_port_operations ipr_sata_ops = { | |||
6219 | }; | 6219 | }; |
6220 | 6220 | ||
6221 | static struct ata_port_info sata_port_info = { | 6221 | static struct ata_port_info sata_port_info = { |
6222 | .flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | ATA_FLAG_SATA_RESET | | 6222 | .flags = ATA_FLAG_SATA | ATA_FLAG_PIO_DMA, |
6223 | ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA, | 6223 | .pio_mask = ATA_PIO4_ONLY, |
6224 | .pio_mask = 0x10, /* pio4 */ | 6224 | .mwdma_mask = ATA_MWDMA2, |
6225 | .mwdma_mask = 0x07, | 6225 | .udma_mask = ATA_UDMA6, |
6226 | .udma_mask = 0x7f, /* udma0-6 */ | ||
6227 | .port_ops = &ipr_sata_ops | 6226 | .port_ops = &ipr_sata_ops |
6228 | }; | 6227 | }; |
6229 | 6228 | ||
diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c index e1a395b438ee..4d3b704ede1c 100644 --- a/drivers/scsi/libsas/sas_ata.c +++ b/drivers/scsi/libsas/sas_ata.c | |||
@@ -238,37 +238,43 @@ static bool sas_ata_qc_fill_rtf(struct ata_queued_cmd *qc) | |||
238 | return true; | 238 | return true; |
239 | } | 239 | } |
240 | 240 | ||
241 | static void sas_ata_phy_reset(struct ata_port *ap) | 241 | static int sas_ata_hard_reset(struct ata_link *link, unsigned int *class, |
242 | unsigned long deadline) | ||
242 | { | 243 | { |
244 | struct ata_port *ap = link->ap; | ||
243 | struct domain_device *dev = ap->private_data; | 245 | struct domain_device *dev = ap->private_data; |
244 | struct sas_internal *i = | 246 | struct sas_internal *i = |
245 | to_sas_internal(dev->port->ha->core.shost->transportt); | 247 | to_sas_internal(dev->port->ha->core.shost->transportt); |
246 | int res = TMF_RESP_FUNC_FAILED; | 248 | int res = TMF_RESP_FUNC_FAILED; |
249 | int ret = 0; | ||
247 | 250 | ||
248 | if (i->dft->lldd_I_T_nexus_reset) | 251 | if (i->dft->lldd_I_T_nexus_reset) |
249 | res = i->dft->lldd_I_T_nexus_reset(dev); | 252 | res = i->dft->lldd_I_T_nexus_reset(dev); |
250 | 253 | ||
251 | if (res != TMF_RESP_FUNC_COMPLETE) | 254 | if (res != TMF_RESP_FUNC_COMPLETE) { |
252 | SAS_DPRINTK("%s: Unable to reset I T nexus?\n", __func__); | 255 | SAS_DPRINTK("%s: Unable to reset I T nexus?\n", __func__); |
256 | ret = -EAGAIN; | ||
257 | } | ||
253 | 258 | ||
254 | switch (dev->sata_dev.command_set) { | 259 | switch (dev->sata_dev.command_set) { |
255 | case ATA_COMMAND_SET: | 260 | case ATA_COMMAND_SET: |
256 | SAS_DPRINTK("%s: Found ATA device.\n", __func__); | 261 | SAS_DPRINTK("%s: Found ATA device.\n", __func__); |
257 | ap->link.device[0].class = ATA_DEV_ATA; | 262 | *class = ATA_DEV_ATA; |
258 | break; | 263 | break; |
259 | case ATAPI_COMMAND_SET: | 264 | case ATAPI_COMMAND_SET: |
260 | SAS_DPRINTK("%s: Found ATAPI device.\n", __func__); | 265 | SAS_DPRINTK("%s: Found ATAPI device.\n", __func__); |
261 | ap->link.device[0].class = ATA_DEV_ATAPI; | 266 | *class = ATA_DEV_ATAPI; |
262 | break; | 267 | break; |
263 | default: | 268 | default: |
264 | SAS_DPRINTK("%s: Unknown SATA command set: %d.\n", | 269 | SAS_DPRINTK("%s: Unknown SATA command set: %d.\n", |
265 | __func__, | 270 | __func__, |
266 | dev->sata_dev.command_set); | 271 | dev->sata_dev.command_set); |
267 | ap->link.device[0].class = ATA_DEV_UNKNOWN; | 272 | *class = ATA_DEV_UNKNOWN; |
268 | break; | 273 | break; |
269 | } | 274 | } |
270 | 275 | ||
271 | ap->cbl = ATA_CBL_SATA; | 276 | ap->cbl = ATA_CBL_SATA; |
277 | return ret; | ||
272 | } | 278 | } |
273 | 279 | ||
274 | static void sas_ata_post_internal(struct ata_queued_cmd *qc) | 280 | static void sas_ata_post_internal(struct ata_queued_cmd *qc) |
@@ -349,7 +355,11 @@ static int sas_ata_scr_read(struct ata_link *link, unsigned int sc_reg_in, | |||
349 | } | 355 | } |
350 | 356 | ||
351 | static struct ata_port_operations sas_sata_ops = { | 357 | static struct ata_port_operations sas_sata_ops = { |
352 | .phy_reset = sas_ata_phy_reset, | 358 | .prereset = ata_std_prereset, |
359 | .softreset = NULL, | ||
360 | .hardreset = sas_ata_hard_reset, | ||
361 | .postreset = ata_std_postreset, | ||
362 | .error_handler = ata_std_error_handler, | ||
353 | .post_internal_cmd = sas_ata_post_internal, | 363 | .post_internal_cmd = sas_ata_post_internal, |
354 | .qc_defer = ata_std_qc_defer, | 364 | .qc_defer = ata_std_qc_defer, |
355 | .qc_prep = ata_noop_qc_prep, | 365 | .qc_prep = ata_noop_qc_prep, |
@@ -362,10 +372,9 @@ static struct ata_port_operations sas_sata_ops = { | |||
362 | }; | 372 | }; |
363 | 373 | ||
364 | static struct ata_port_info sata_port_info = { | 374 | static struct ata_port_info sata_port_info = { |
365 | .flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | ATA_FLAG_SATA_RESET | | 375 | .flags = ATA_FLAG_SATA | ATA_FLAG_PIO_DMA | ATA_FLAG_NCQ, |
366 | ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA | ATA_FLAG_NCQ, | 376 | .pio_mask = ATA_PIO4, |
367 | .pio_mask = 0x1f, /* PIO0-4 */ | 377 | .mwdma_mask = ATA_MWDMA2, |
368 | .mwdma_mask = 0x07, /* MWDMA0-2 */ | ||
369 | .udma_mask = ATA_UDMA6, | 378 | .udma_mask = ATA_UDMA6, |
370 | .port_ops = &sas_sata_ops | 379 | .port_ops = &sas_sata_ops |
371 | }; | 380 | }; |
@@ -781,3 +790,68 @@ int sas_discover_sata(struct domain_device *dev) | |||
781 | 790 | ||
782 | return res; | 791 | return res; |
783 | } | 792 | } |
793 | |||
794 | void sas_ata_strategy_handler(struct Scsi_Host *shost) | ||
795 | { | ||
796 | struct scsi_device *sdev; | ||
797 | |||
798 | shost_for_each_device(sdev, shost) { | ||
799 | struct domain_device *ddev = sdev_to_domain_dev(sdev); | ||
800 | struct ata_port *ap = ddev->sata_dev.ap; | ||
801 | |||
802 | if (!dev_is_sata(ddev)) | ||
803 | continue; | ||
804 | |||
805 | ata_port_printk(ap, KERN_DEBUG, "sas eh calling libata port error handler"); | ||
806 | ata_scsi_port_error_handler(shost, ap); | ||
807 | } | ||
808 | } | ||
809 | |||
810 | int sas_ata_timed_out(struct scsi_cmnd *cmd, struct sas_task *task, | ||
811 | enum blk_eh_timer_return *rtn) | ||
812 | { | ||
813 | struct domain_device *ddev = cmd_to_domain_dev(cmd); | ||
814 | |||
815 | if (!dev_is_sata(ddev) || task) | ||
816 | return 0; | ||
817 | |||
818 | /* we're a sata device with no task, so this must be a libata | ||
819 | * eh timeout. Ideally should hook into libata timeout | ||
820 | * handling, but there's no point, it just wants to activate | ||
821 | * the eh thread */ | ||
822 | *rtn = BLK_EH_NOT_HANDLED; | ||
823 | return 1; | ||
824 | } | ||
825 | |||
826 | int sas_ata_eh(struct Scsi_Host *shost, struct list_head *work_q, | ||
827 | struct list_head *done_q) | ||
828 | { | ||
829 | int rtn = 0; | ||
830 | struct scsi_cmnd *cmd, *n; | ||
831 | struct ata_port *ap; | ||
832 | |||
833 | do { | ||
834 | LIST_HEAD(sata_q); | ||
835 | |||
836 | ap = NULL; | ||
837 | |||
838 | list_for_each_entry_safe(cmd, n, work_q, eh_entry) { | ||
839 | struct domain_device *ddev = cmd_to_domain_dev(cmd); | ||
840 | |||
841 | if (!dev_is_sata(ddev) || TO_SAS_TASK(cmd)) | ||
842 | continue; | ||
843 | if(ap && ap != ddev->sata_dev.ap) | ||
844 | continue; | ||
845 | ap = ddev->sata_dev.ap; | ||
846 | rtn = 1; | ||
847 | list_move(&cmd->eh_entry, &sata_q); | ||
848 | } | ||
849 | |||
850 | if (!list_empty(&sata_q)) { | ||
851 | ata_port_printk(ap, KERN_DEBUG,"sas eh calling libata cmd error handler\n"); | ||
852 | ata_scsi_cmd_error_handler(shost, ap, &sata_q); | ||
853 | } | ||
854 | } while (ap); | ||
855 | |||
856 | return rtn; | ||
857 | } | ||
diff --git a/drivers/scsi/libsas/sas_scsi_host.c b/drivers/scsi/libsas/sas_scsi_host.c index 9a7aaf5f1311..67758ea8eb7f 100644 --- a/drivers/scsi/libsas/sas_scsi_host.c +++ b/drivers/scsi/libsas/sas_scsi_host.c | |||
@@ -663,11 +663,16 @@ void sas_scsi_recover_host(struct Scsi_Host *shost) | |||
663 | * scsi_unjam_host does, but we skip scsi_eh_abort_cmds because any | 663 | * scsi_unjam_host does, but we skip scsi_eh_abort_cmds because any |
664 | * command we see here has no sas_task and is thus unknown to the HA. | 664 | * command we see here has no sas_task and is thus unknown to the HA. |
665 | */ | 665 | */ |
666 | if (!scsi_eh_get_sense(&eh_work_q, &ha->eh_done_q)) | 666 | if (!sas_ata_eh(shost, &eh_work_q, &ha->eh_done_q)) |
667 | scsi_eh_ready_devs(shost, &eh_work_q, &ha->eh_done_q); | 667 | if (!scsi_eh_get_sense(&eh_work_q, &ha->eh_done_q)) |
668 | scsi_eh_ready_devs(shost, &eh_work_q, &ha->eh_done_q); | ||
668 | 669 | ||
669 | out: | 670 | out: |
671 | /* now link into libata eh --- if we have any ata devices */ | ||
672 | sas_ata_strategy_handler(shost); | ||
673 | |||
670 | scsi_eh_flush_done_q(&ha->eh_done_q); | 674 | scsi_eh_flush_done_q(&ha->eh_done_q); |
675 | |||
671 | SAS_DPRINTK("--- Exit %s\n", __func__); | 676 | SAS_DPRINTK("--- Exit %s\n", __func__); |
672 | return; | 677 | return; |
673 | } | 678 | } |
@@ -676,6 +681,11 @@ enum blk_eh_timer_return sas_scsi_timed_out(struct scsi_cmnd *cmd) | |||
676 | { | 681 | { |
677 | struct sas_task *task = TO_SAS_TASK(cmd); | 682 | struct sas_task *task = TO_SAS_TASK(cmd); |
678 | unsigned long flags; | 683 | unsigned long flags; |
684 | enum blk_eh_timer_return rtn; | ||
685 | |||
686 | if (sas_ata_timed_out(cmd, task, &rtn)) | ||
687 | return rtn; | ||
688 | |||
679 | 689 | ||
680 | if (!task) { | 690 | if (!task) { |
681 | cmd->request->timeout /= 2; | 691 | cmd->request->timeout /= 2; |
diff --git a/drivers/scsi/megaraid/megaraid_sas_fp.c b/drivers/scsi/megaraid/megaraid_sas_fp.c index 53fa96ae2b3e..8fe3a45794fc 100644 --- a/drivers/scsi/megaraid/megaraid_sas_fp.c +++ b/drivers/scsi/megaraid/megaraid_sas_fp.c | |||
@@ -39,7 +39,6 @@ | |||
39 | #include <linux/spinlock.h> | 39 | #include <linux/spinlock.h> |
40 | #include <linux/interrupt.h> | 40 | #include <linux/interrupt.h> |
41 | #include <linux/delay.h> | 41 | #include <linux/delay.h> |
42 | #include <linux/smp_lock.h> | ||
43 | #include <linux/uio.h> | 42 | #include <linux/uio.h> |
44 | #include <linux/uaccess.h> | 43 | #include <linux/uaccess.h> |
45 | #include <linux/fs.h> | 44 | #include <linux/fs.h> |
diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c index c1e09d5a6196..d6e2a663b165 100644 --- a/drivers/scsi/megaraid/megaraid_sas_fusion.c +++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c | |||
@@ -38,7 +38,6 @@ | |||
38 | #include <linux/spinlock.h> | 38 | #include <linux/spinlock.h> |
39 | #include <linux/interrupt.h> | 39 | #include <linux/interrupt.h> |
40 | #include <linux/delay.h> | 40 | #include <linux/delay.h> |
41 | #include <linux/smp_lock.h> | ||
42 | #include <linux/uio.h> | 41 | #include <linux/uio.h> |
43 | #include <linux/uaccess.h> | 42 | #include <linux/uaccess.h> |
44 | #include <linux/fs.h> | 43 | #include <linux/fs.h> |
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index f27724d76cf6..e90f7c16b956 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
@@ -349,7 +349,7 @@ static int qla25xx_setup_mode(struct scsi_qla_host *vha) | |||
349 | "Can't create request queue\n"); | 349 | "Can't create request queue\n"); |
350 | goto fail; | 350 | goto fail; |
351 | } | 351 | } |
352 | ha->wq = create_workqueue("qla2xxx_wq"); | 352 | ha->wq = alloc_workqueue("qla2xxx_wq", WQ_MEM_RECLAIM, 1); |
353 | vha->req = ha->req_q_map[req]; | 353 | vha->req = ha->req_q_map[req]; |
354 | options |= BIT_1; | 354 | options |= BIT_1; |
355 | for (ques = 1; ques < ha->max_rsp_queues; ques++) { | 355 | for (ques = 1; ques < ha->max_rsp_queues; ques++) { |
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 9045c52abd25..fb2bb35c62cb 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
@@ -443,7 +443,7 @@ static void scsi_run_queue(struct request_queue *q) | |||
443 | &sdev->request_queue->queue_flags); | 443 | &sdev->request_queue->queue_flags); |
444 | if (flagset) | 444 | if (flagset) |
445 | queue_flag_set(QUEUE_FLAG_REENTER, sdev->request_queue); | 445 | queue_flag_set(QUEUE_FLAG_REENTER, sdev->request_queue); |
446 | __blk_run_queue(sdev->request_queue); | 446 | __blk_run_queue(sdev->request_queue, false); |
447 | if (flagset) | 447 | if (flagset) |
448 | queue_flag_clear(QUEUE_FLAG_REENTER, sdev->request_queue); | 448 | queue_flag_clear(QUEUE_FLAG_REENTER, sdev->request_queue); |
449 | spin_unlock(sdev->request_queue->queue_lock); | 449 | spin_unlock(sdev->request_queue->queue_lock); |
diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h index b4056d14f812..342ee1a9c41d 100644 --- a/drivers/scsi/scsi_priv.h +++ b/drivers/scsi/scsi_priv.h | |||
@@ -146,7 +146,7 @@ static inline void scsi_netlink_exit(void) {} | |||
146 | #endif | 146 | #endif |
147 | 147 | ||
148 | /* scsi_pm.c */ | 148 | /* scsi_pm.c */ |
149 | #ifdef CONFIG_PM_OPS | 149 | #ifdef CONFIG_PM |
150 | extern const struct dev_pm_ops scsi_bus_pm_ops; | 150 | extern const struct dev_pm_ops scsi_bus_pm_ops; |
151 | #endif | 151 | #endif |
152 | #ifdef CONFIG_PM_RUNTIME | 152 | #ifdef CONFIG_PM_RUNTIME |
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c index 490ce213204e..e44ff64233fd 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c | |||
@@ -383,7 +383,7 @@ struct bus_type scsi_bus_type = { | |||
383 | .name = "scsi", | 383 | .name = "scsi", |
384 | .match = scsi_bus_match, | 384 | .match = scsi_bus_match, |
385 | .uevent = scsi_bus_uevent, | 385 | .uevent = scsi_bus_uevent, |
386 | #ifdef CONFIG_PM_OPS | 386 | #ifdef CONFIG_PM |
387 | .pm = &scsi_bus_pm_ops, | 387 | .pm = &scsi_bus_pm_ops, |
388 | #endif | 388 | #endif |
389 | }; | 389 | }; |
diff --git a/drivers/scsi/scsi_tgt_lib.c b/drivers/scsi/scsi_tgt_lib.c index c399be979921..f67282058ba1 100644 --- a/drivers/scsi/scsi_tgt_lib.c +++ b/drivers/scsi/scsi_tgt_lib.c | |||
@@ -629,7 +629,7 @@ static int __init scsi_tgt_init(void) | |||
629 | if (!scsi_tgt_cmd_cache) | 629 | if (!scsi_tgt_cmd_cache) |
630 | return -ENOMEM; | 630 | return -ENOMEM; |
631 | 631 | ||
632 | scsi_tgtd = create_workqueue("scsi_tgtd"); | 632 | scsi_tgtd = alloc_workqueue("scsi_tgtd", 0, 1); |
633 | if (!scsi_tgtd) { | 633 | if (!scsi_tgtd) { |
634 | err = -ENOMEM; | 634 | err = -ENOMEM; |
635 | goto free_kmemcache; | 635 | goto free_kmemcache; |
diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c index 998c01be3234..5c3ccfc6b622 100644 --- a/drivers/scsi/scsi_transport_fc.c +++ b/drivers/scsi/scsi_transport_fc.c | |||
@@ -3829,7 +3829,7 @@ fc_bsg_goose_queue(struct fc_rport *rport) | |||
3829 | !test_bit(QUEUE_FLAG_REENTER, &rport->rqst_q->queue_flags); | 3829 | !test_bit(QUEUE_FLAG_REENTER, &rport->rqst_q->queue_flags); |
3830 | if (flagset) | 3830 | if (flagset) |
3831 | queue_flag_set(QUEUE_FLAG_REENTER, rport->rqst_q); | 3831 | queue_flag_set(QUEUE_FLAG_REENTER, rport->rqst_q); |
3832 | __blk_run_queue(rport->rqst_q); | 3832 | __blk_run_queue(rport->rqst_q, false); |
3833 | if (flagset) | 3833 | if (flagset) |
3834 | queue_flag_clear(QUEUE_FLAG_REENTER, rport->rqst_q); | 3834 | queue_flag_clear(QUEUE_FLAG_REENTER, rport->rqst_q); |
3835 | spin_unlock_irqrestore(rport->rqst_q->queue_lock, flags); | 3835 | spin_unlock_irqrestore(rport->rqst_q->queue_lock, flags); |