diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/s390/scsi/zfcp_aux.c | 2 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_def.h | 1 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_erp.c | 4 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_fsf.c | 2 |
4 files changed, 6 insertions, 3 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); |
diff --git a/drivers/s390/scsi/zfcp_def.h b/drivers/s390/scsi/zfcp_def.h index 7fa8937c8c58..73eb41580f25 100644 --- a/drivers/s390/scsi/zfcp_def.h +++ b/drivers/s390/scsi/zfcp_def.h | |||
@@ -602,6 +602,7 @@ struct zfcp_data { | |||
602 | struct kmem_cache *fsf_req_qtcb_cache; | 602 | struct kmem_cache *fsf_req_qtcb_cache; |
603 | struct kmem_cache *sr_buffer_cache; | 603 | struct kmem_cache *sr_buffer_cache; |
604 | struct kmem_cache *gid_pn_cache; | 604 | struct kmem_cache *gid_pn_cache; |
605 | struct workqueue_struct *work_queue; | ||
605 | }; | 606 | }; |
606 | 607 | ||
607 | /* struct used by memory pools for fsf_requests */ | 608 | /* struct used by memory pools for fsf_requests */ |
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c index 174b38fe7623..f5ebeb7ca2be 100644 --- a/drivers/s390/scsi/zfcp_erp.c +++ b/drivers/s390/scsi/zfcp_erp.c | |||
@@ -869,7 +869,7 @@ static int zfcp_erp_port_strategy_open_common(struct zfcp_erp_action *act) | |||
869 | if (fc_host_port_type(adapter->scsi_host) == FC_PORTTYPE_PTP) | 869 | if (fc_host_port_type(adapter->scsi_host) == FC_PORTTYPE_PTP) |
870 | return zfcp_erp_open_ptp_port(act); | 870 | return zfcp_erp_open_ptp_port(act); |
871 | if (!(p_status & ZFCP_STATUS_PORT_DID_DID)) { | 871 | if (!(p_status & ZFCP_STATUS_PORT_DID_DID)) { |
872 | schedule_work(&port->gid_pn_work); | 872 | queue_work(zfcp_data.work_queue, &port->gid_pn_work); |
873 | return ZFCP_ERP_CONTINUES; | 873 | return ZFCP_ERP_CONTINUES; |
874 | } | 874 | } |
875 | case ZFCP_ERP_STEP_NAMESERVER_LOOKUP: | 875 | case ZFCP_ERP_STEP_NAMESERVER_LOOKUP: |
@@ -1209,7 +1209,7 @@ static void zfcp_erp_schedule_work(struct zfcp_unit *unit) | |||
1209 | atomic_set_mask(ZFCP_STATUS_UNIT_SCSI_WORK_PENDING, &unit->status); | 1209 | atomic_set_mask(ZFCP_STATUS_UNIT_SCSI_WORK_PENDING, &unit->status); |
1210 | INIT_WORK(&p->work, zfcp_erp_scsi_scan); | 1210 | INIT_WORK(&p->work, zfcp_erp_scsi_scan); |
1211 | p->unit = unit; | 1211 | p->unit = unit; |
1212 | schedule_work(&p->work); | 1212 | queue_work(zfcp_data.work_queue, &p->work); |
1213 | } | 1213 | } |
1214 | 1214 | ||
1215 | static void zfcp_erp_rport_register(struct zfcp_port *port) | 1215 | static void zfcp_erp_rport_register(struct zfcp_port *port) |
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) |