diff options
Diffstat (limited to 'drivers/s390/scsi/zfcp_aux.c')
-rw-r--r-- | drivers/s390/scsi/zfcp_aux.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/s390/scsi/zfcp_aux.c b/drivers/s390/scsi/zfcp_aux.c index e8f39f02bc3b..d1e75d36ed1a 100644 --- a/drivers/s390/scsi/zfcp_aux.c +++ b/drivers/s390/scsi/zfcp_aux.c | |||
@@ -541,6 +541,9 @@ int zfcp_adapter_enqueue(struct ccw_device *ccw_device) | |||
541 | rwlock_init(&adapter->erp_lock); | 541 | rwlock_init(&adapter->erp_lock); |
542 | rwlock_init(&adapter->abort_lock); | 542 | rwlock_init(&adapter->abort_lock); |
543 | 543 | ||
544 | if (zfcp_erp_thread_setup(adapter)) | ||
545 | goto erp_thread_failed; | ||
546 | |||
544 | INIT_WORK(&adapter->stat_work, _zfcp_status_read_scheduler); | 547 | INIT_WORK(&adapter->stat_work, _zfcp_status_read_scheduler); |
545 | INIT_WORK(&adapter->scan_work, _zfcp_fc_scan_ports_later); | 548 | INIT_WORK(&adapter->scan_work, _zfcp_fc_scan_ports_later); |
546 | 549 | ||
@@ -561,6 +564,8 @@ int zfcp_adapter_enqueue(struct ccw_device *ccw_device) | |||
561 | return 0; | 564 | return 0; |
562 | 565 | ||
563 | sysfs_failed: | 566 | sysfs_failed: |
567 | zfcp_erp_thread_kill(adapter); | ||
568 | erp_thread_failed: | ||
564 | zfcp_fc_gs_destroy(adapter); | 569 | zfcp_fc_gs_destroy(adapter); |
565 | generic_services_failed: | 570 | generic_services_failed: |
566 | zfcp_destroy_adapter_work_queue(adapter); | 571 | zfcp_destroy_adapter_work_queue(adapter); |
@@ -602,6 +607,7 @@ void zfcp_adapter_dequeue(struct zfcp_adapter *adapter) | |||
602 | return; | 607 | return; |
603 | 608 | ||
604 | zfcp_fc_gs_destroy(adapter); | 609 | zfcp_fc_gs_destroy(adapter); |
610 | zfcp_erp_thread_kill(adapter); | ||
605 | zfcp_destroy_adapter_work_queue(adapter); | 611 | zfcp_destroy_adapter_work_queue(adapter); |
606 | zfcp_dbf_adapter_unregister(adapter->dbf); | 612 | zfcp_dbf_adapter_unregister(adapter->dbf); |
607 | zfcp_free_low_mem_buffers(adapter); | 613 | zfcp_free_low_mem_buffers(adapter); |