aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/scsi/zfcp_aux.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/scsi/zfcp_aux.c')
-rw-r--r--drivers/s390/scsi/zfcp_aux.c6
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
563sysfs_failed: 566sysfs_failed:
567 zfcp_erp_thread_kill(adapter);
568erp_thread_failed:
564 zfcp_fc_gs_destroy(adapter); 569 zfcp_fc_gs_destroy(adapter);
565generic_services_failed: 570generic_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);