|
@@ -422,8 +422,7 @@ static int fc_host_setup(struct transport_container *tc, struct device *dev,
|
|
|
|
|
|
snprintf(fc_host->work_q_name, sizeof(fc_host->work_q_name),
|
|
|
"fc_wq_%d", shost->host_no);
|
|
|
- fc_host->work_q = create_singlethread_workqueue(
|
|
|
- fc_host->work_q_name);
|
|
|
+ fc_host->work_q = alloc_workqueue(fc_host->work_q_name, 0, 0);
|
|
|
if (!fc_host->work_q)
|
|
|
return -ENOMEM;
|
|
|
|
|
@@ -431,8 +430,8 @@ static int fc_host_setup(struct transport_container *tc, struct device *dev,
|
|
|
snprintf(fc_host->devloss_work_q_name,
|
|
|
sizeof(fc_host->devloss_work_q_name),
|
|
|
"fc_dl_%d", shost->host_no);
|
|
|
- fc_host->devloss_work_q = create_singlethread_workqueue(
|
|
|
- fc_host->devloss_work_q_name);
|
|
|
+ fc_host->devloss_work_q =
|
|
|
+ alloc_workqueue(fc_host->devloss_work_q_name, 0, 0);
|
|
|
if (!fc_host->devloss_work_q) {
|
|
|
destroy_workqueue(fc_host->work_q);
|
|
|
fc_host->work_q = NULL;
|
|
@@ -2489,6 +2488,8 @@ fc_rport_final_delete(struct work_struct *work)
|
|
|
unsigned long flags;
|
|
|
int do_callback = 0;
|
|
|
|
|
|
+ fc_terminate_rport_io(rport);
|
|
|
+
|
|
|
/*
|
|
|
* if a scan is pending, flush the SCSI Host work_q so that
|
|
|
* that we can reclaim the rport scan work element.
|
|
@@ -2496,8 +2497,6 @@ fc_rport_final_delete(struct work_struct *work)
|
|
|
if (rport->flags & FC_RPORT_SCAN_PENDING)
|
|
|
scsi_flush_work(shost);
|
|
|
|
|
|
- fc_terminate_rport_io(rport);
|
|
|
-
|
|
|
/*
|
|
|
* Cancel any outstanding timers. These should really exist
|
|
|
* only when rmmod'ing the LLDD and we're asking for
|