diff options
author | Swen Schillig <swen@vnet.ibm.com> | 2008-10-01 06:42:22 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-10-03 13:11:55 -0400 |
commit | b7f15f3c94196accac799727502ed88a029ae7ef (patch) | |
tree | d620f4cc0fe75ca43b48a675fb7bd681cb7919f3 /drivers/s390/scsi/zfcp_fsf.c | |
parent | 57069386699994c3e67042fc4928c418f3a39e01 (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_fsf.c')
-rw-r--r-- | drivers/s390/scsi/zfcp_fsf.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c index f073fff0868f..600ef5711acb 100644 --- a/drivers/s390/scsi/zfcp_fsf.c +++ b/drivers/s390/scsi/zfcp_fsf.c | |||
@@ -329,7 +329,7 @@ static void zfcp_fsf_status_read_handler(struct zfcp_fsf_req *req) | |||
329 | zfcp_fsf_req_free(req); | 329 | zfcp_fsf_req_free(req); |
330 | 330 | ||
331 | atomic_inc(&adapter->stat_miss); | 331 | atomic_inc(&adapter->stat_miss); |
332 | schedule_work(&adapter->stat_work); | 332 | queue_work(zfcp_data.work_queue, &adapter->stat_work); |
333 | } | 333 | } |
334 | 334 | ||
335 | static void zfcp_fsf_fsfstatus_qual_eval(struct zfcp_fsf_req *req) | 335 | static void zfcp_fsf_fsfstatus_qual_eval(struct zfcp_fsf_req *req) |