aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/scsi/zfcp_fc.c
diff options
context:
space:
mode:
authorChristof Schmitt <christof.schmitt@de.ibm.com>2009-08-18 09:43:12 -0400
committerJames Bottomley <James.Bottomley@suse.de>2009-09-05 09:49:15 -0400
commit55c770fa11d21456e02dc7afb9a37404da9c7b4c (patch)
tree26d0d750f7864f6fec9acf2aa1610757e5417caf /drivers/s390/scsi/zfcp_fc.c
parent14e242ea55a8b807dc1fb7654941caf68a20cd81 (diff)
[SCSI] zfcp: Implicitly close all wka ports
An adapter shutdown implicitly closes all open ports. Make sure to mark all WKA ports as offline, not only the directory server. Also make sure that no pending wka port work is running when the adapter is being removed. Reviewed-by: Swen Schillig <swen@vnet.ibm.com> Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/s390/scsi/zfcp_fc.c')
-rw-r--r--drivers/s390/scsi/zfcp_fc.c11
1 files changed, 10 insertions, 1 deletions
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;