aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/s390/scsi/zfcp_aux.c1
-rw-r--r--drivers/s390/scsi/zfcp_erp.c2
-rw-r--r--drivers/s390/scsi/zfcp_ext.h4
-rw-r--r--drivers/s390/scsi/zfcp_fc.c11
4 files changed, 13 insertions, 5 deletions
diff --git a/drivers/s390/scsi/zfcp_aux.c b/drivers/s390/scsi/zfcp_aux.c
index 870fe79bc7ea..7aba6840243f 100644
--- a/drivers/s390/scsi/zfcp_aux.c
+++ b/drivers/s390/scsi/zfcp_aux.c
@@ -555,6 +555,7 @@ void zfcp_adapter_dequeue(struct zfcp_adapter *adapter)
555 555
556 cancel_work_sync(&adapter->scan_work); 556 cancel_work_sync(&adapter->scan_work);
557 cancel_work_sync(&adapter->stat_work); 557 cancel_work_sync(&adapter->stat_work);
558 zfcp_fc_wka_ports_force_offline(adapter->gs);
558 zfcp_adapter_scsi_unregister(adapter); 559 zfcp_adapter_scsi_unregister(adapter);
559 sysfs_remove_group(&adapter->ccw_device->dev.kobj, 560 sysfs_remove_group(&adapter->ccw_device->dev.kobj,
560 &zfcp_sysfs_adapter_attrs); 561 &zfcp_sysfs_adapter_attrs);
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c
index c75d6f35cb5f..39e4dd15453f 100644
--- a/drivers/s390/scsi/zfcp_erp.c
+++ b/drivers/s390/scsi/zfcp_erp.c
@@ -714,7 +714,7 @@ static void zfcp_erp_adapter_strategy_close(struct zfcp_erp_action *act)
714 zfcp_qdio_close(adapter); 714 zfcp_qdio_close(adapter);
715 zfcp_fsf_req_dismiss_all(adapter); 715 zfcp_fsf_req_dismiss_all(adapter);
716 adapter->fsf_req_seq_no = 0; 716 adapter->fsf_req_seq_no = 0;
717 zfcp_fc_wka_port_force_offline(&adapter->gs->ds); 717 zfcp_fc_wka_ports_force_offline(adapter->gs);
718 /* all ports and units are closed */ 718 /* all ports and units are closed */
719 zfcp_erp_modify_adapter_status(adapter, "erascl1", NULL, 719 zfcp_erp_modify_adapter_status(adapter, "erascl1", NULL,
720 ZFCP_STATUS_COMMON_OPEN, ZFCP_CLEAR); 720 ZFCP_STATUS_COMMON_OPEN, ZFCP_CLEAR);
diff --git a/drivers/s390/scsi/zfcp_ext.h b/drivers/s390/scsi/zfcp_ext.h
index eeed322f32d0..1a66695f11a2 100644
--- a/drivers/s390/scsi/zfcp_ext.h
+++ b/drivers/s390/scsi/zfcp_ext.h
@@ -104,12 +104,10 @@ extern int zfcp_fc_ns_gid_pn(struct zfcp_erp_action *);
104extern void zfcp_fc_plogi_evaluate(struct zfcp_port *, struct fsf_plogi *); 104extern void zfcp_fc_plogi_evaluate(struct zfcp_port *, struct fsf_plogi *);
105extern void zfcp_test_link(struct zfcp_port *); 105extern void zfcp_test_link(struct zfcp_port *);
106extern void zfcp_fc_link_test_work(struct work_struct *); 106extern void zfcp_fc_link_test_work(struct work_struct *);
107extern void zfcp_fc_wka_port_force_offline(struct zfcp_wka_port *); 107extern void zfcp_fc_wka_ports_force_offline(struct zfcp_wka_ports *);
108extern void zfcp_fc_wka_ports_init(struct zfcp_adapter *); 108extern void zfcp_fc_wka_ports_init(struct zfcp_adapter *);
109extern int zfcp_fc_execute_els_fc_job(struct fc_bsg_job *); 109extern int zfcp_fc_execute_els_fc_job(struct fc_bsg_job *);
110extern int zfcp_fc_execute_ct_fc_job(struct fc_bsg_job *); 110extern int zfcp_fc_execute_ct_fc_job(struct fc_bsg_job *);
111extern void zfcp_fc_wka_port_force_offline(struct zfcp_wka_port *);
112
113 111
114/* zfcp_fsf.c */ 112/* zfcp_fsf.c */
115extern int zfcp_fsf_open_port(struct zfcp_erp_action *); 113extern int zfcp_fsf_open_port(struct zfcp_erp_action *);
diff --git a/drivers/s390/scsi/zfcp_fc.c b/drivers/s390/scsi/zfcp_fc.c
index 94c13bd32b5f..6d0fef92567b 100644
--- a/drivers/s390/scsi/zfcp_fc.c
+++ b/drivers/s390/scsi/zfcp_fc.c
@@ -132,7 +132,7 @@ static void zfcp_fc_wka_port_init(struct zfcp_wka_port *wka_port, u32 d_id,
132 INIT_DELAYED_WORK(&wka_port->work, zfcp_wka_port_offline); 132 INIT_DELAYED_WORK(&wka_port->work, zfcp_wka_port_offline);
133} 133}
134 134
135void zfcp_fc_wka_port_force_offline(struct zfcp_wka_port *wka) 135static void zfcp_fc_wka_port_force_offline(struct zfcp_wka_port *wka)
136{ 136{
137 cancel_delayed_work_sync(&wka->work); 137 cancel_delayed_work_sync(&wka->work);
138 mutex_lock(&wka->mutex); 138 mutex_lock(&wka->mutex);
@@ -140,6 +140,15 @@ void zfcp_fc_wka_port_force_offline(struct zfcp_wka_port *wka)
140 mutex_unlock(&wka->mutex); 140 mutex_unlock(&wka->mutex);
141} 141}
142 142
143void zfcp_fc_wka_ports_force_offline(struct zfcp_wka_ports *gs)
144{
145 zfcp_fc_wka_port_force_offline(&gs->ms);
146 zfcp_fc_wka_port_force_offline(&gs->ts);
147 zfcp_fc_wka_port_force_offline(&gs->ds);
148 zfcp_fc_wka_port_force_offline(&gs->as);
149 zfcp_fc_wka_port_force_offline(&gs->ks);
150}
151
143void zfcp_fc_wka_ports_init(struct zfcp_adapter *adapter) 152void zfcp_fc_wka_ports_init(struct zfcp_adapter *adapter)
144{ 153{
145 struct zfcp_wka_ports *gs = adapter->gs; 154 struct zfcp_wka_ports *gs = adapter->gs;