aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/scsi/zfcp_aux.c
diff options
context:
space:
mode:
authorSwen Schillig <swen@vnet.ibm.com>2008-10-01 06:42:22 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-10-03 13:11:55 -0400
commitb7f15f3c94196accac799727502ed88a029ae7ef (patch)
treed620f4cc0fe75ca43b48a675fb7bd681cb7919f3 /drivers/s390/scsi/zfcp_aux.c
parent57069386699994c3e67042fc4928c418f3a39e01 (diff)
[SCSI] zfcp: fix deadlock caused by shared work queue tasks
Each adapter reopen trigger automatically a scan_port task which is waiting for the ERP to be finished before further processing. Since the initial device setup enqueues adapter, port and LUN which are individual ERP actions, this process would start after everything is done. Unfortunately the port_reopen requires another scheduled work to be finished which is queued after the automatic scan_port -> deadlock ! This fix creates an own work queue for ERP based nameserver requests. Signed-off-by: Swen Schillig <swen@vnet.ibm.com> Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/s390/scsi/zfcp_aux.c')
-rw-r--r--drivers/s390/scsi/zfcp_aux.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/s390/scsi/zfcp_aux.c b/drivers/s390/scsi/zfcp_aux.c
index b9984648aca6..05f3de64f6a3 100644
--- a/drivers/s390/scsi/zfcp_aux.c
+++ b/drivers/s390/scsi/zfcp_aux.c
@@ -168,6 +168,8 @@ static int __init zfcp_module_init(void)
168 if (!zfcp_data.gid_pn_cache) 168 if (!zfcp_data.gid_pn_cache)
169 goto out_gid_cache; 169 goto out_gid_cache;
170 170
171 zfcp_data.work_queue = create_singlethread_workqueue("zfcp_wq");
172
171 INIT_LIST_HEAD(&zfcp_data.adapter_list_head); 173 INIT_LIST_HEAD(&zfcp_data.adapter_list_head);
172 sema_init(&zfcp_data.config_sema, 1); 174 sema_init(&zfcp_data.config_sema, 1);
173 rwlock_init(&zfcp_data.config_lock); 175 rwlock_init(&zfcp_data.config_lock);