diff options
-rw-r--r-- | drivers/scsi/scsi_transport_fc.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c index fdf3fa63905..358dff6732e 100644 --- a/drivers/scsi/scsi_transport_fc.c +++ b/drivers/scsi/scsi_transport_fc.c | |||
@@ -422,8 +422,7 @@ static int fc_host_setup(struct transport_container *tc, struct device *dev, | |||
422 | 422 | ||
423 | snprintf(fc_host->work_q_name, sizeof(fc_host->work_q_name), | 423 | snprintf(fc_host->work_q_name, sizeof(fc_host->work_q_name), |
424 | "fc_wq_%d", shost->host_no); | 424 | "fc_wq_%d", shost->host_no); |
425 | fc_host->work_q = create_singlethread_workqueue( | 425 | fc_host->work_q = alloc_workqueue(fc_host->work_q_name, 0, 0); |
426 | fc_host->work_q_name); | ||
427 | if (!fc_host->work_q) | 426 | if (!fc_host->work_q) |
428 | return -ENOMEM; | 427 | return -ENOMEM; |
429 | 428 | ||
@@ -431,8 +430,8 @@ static int fc_host_setup(struct transport_container *tc, struct device *dev, | |||
431 | snprintf(fc_host->devloss_work_q_name, | 430 | snprintf(fc_host->devloss_work_q_name, |
432 | sizeof(fc_host->devloss_work_q_name), | 431 | sizeof(fc_host->devloss_work_q_name), |
433 | "fc_dl_%d", shost->host_no); | 432 | "fc_dl_%d", shost->host_no); |
434 | fc_host->devloss_work_q = create_singlethread_workqueue( | 433 | fc_host->devloss_work_q = |
435 | fc_host->devloss_work_q_name); | 434 | alloc_workqueue(fc_host->devloss_work_q_name, 0, 0); |
436 | if (!fc_host->devloss_work_q) { | 435 | if (!fc_host->devloss_work_q) { |
437 | destroy_workqueue(fc_host->work_q); | 436 | destroy_workqueue(fc_host->work_q); |
438 | fc_host->work_q = NULL; | 437 | fc_host->work_q = NULL; |
@@ -2489,6 +2488,8 @@ fc_rport_final_delete(struct work_struct *work) | |||
2489 | unsigned long flags; | 2488 | unsigned long flags; |
2490 | int do_callback = 0; | 2489 | int do_callback = 0; |
2491 | 2490 | ||
2491 | fc_terminate_rport_io(rport); | ||
2492 | |||
2492 | /* | 2493 | /* |
2493 | * if a scan is pending, flush the SCSI Host work_q so that | 2494 | * if a scan is pending, flush the SCSI Host work_q so that |
2494 | * that we can reclaim the rport scan work element. | 2495 | * that we can reclaim the rport scan work element. |
@@ -2496,8 +2497,6 @@ fc_rport_final_delete(struct work_struct *work) | |||
2496 | if (rport->flags & FC_RPORT_SCAN_PENDING) | 2497 | if (rport->flags & FC_RPORT_SCAN_PENDING) |
2497 | scsi_flush_work(shost); | 2498 | scsi_flush_work(shost); |
2498 | 2499 | ||
2499 | fc_terminate_rport_io(rport); | ||
2500 | |||
2501 | /* | 2500 | /* |
2502 | * Cancel any outstanding timers. These should really exist | 2501 | * Cancel any outstanding timers. These should really exist |
2503 | * only when rmmod'ing the LLDD and we're asking for | 2502 | * only when rmmod'ing the LLDD and we're asking for |