aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/scsi/zfcp_ccw.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/scsi/zfcp_ccw.c')
-rw-r--r--drivers/s390/scsi/zfcp_ccw.c37
1 files changed, 15 insertions, 22 deletions
diff --git a/drivers/s390/scsi/zfcp_ccw.c b/drivers/s390/scsi/zfcp_ccw.c
index ce1cc7a11fb4..e8b7cee62046 100644
--- a/drivers/s390/scsi/zfcp_ccw.c
+++ b/drivers/s390/scsi/zfcp_ccw.c
@@ -46,10 +46,9 @@ static int zfcp_ccw_activate(struct ccw_device *cdev)
46 if (!adapter) 46 if (!adapter)
47 return 0; 47 return 0;
48 48
49 zfcp_erp_modify_adapter_status(adapter, "ccresu1", NULL, 49 zfcp_erp_set_adapter_status(adapter, ZFCP_STATUS_COMMON_RUNNING);
50 ZFCP_STATUS_COMMON_RUNNING, ZFCP_SET);
51 zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED, 50 zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED,
52 "ccresu2", NULL); 51 "ccresu2");
53 zfcp_erp_wait(adapter); 52 zfcp_erp_wait(adapter);
54 flush_work(&adapter->scan_work); 53 flush_work(&adapter->scan_work);
55 54
@@ -164,14 +163,7 @@ static int zfcp_ccw_set_online(struct ccw_device *cdev)
164 BUG_ON(!zfcp_reqlist_isempty(adapter->req_list)); 163 BUG_ON(!zfcp_reqlist_isempty(adapter->req_list));
165 adapter->req_no = 0; 164 adapter->req_no = 0;
166 165
167 zfcp_erp_modify_adapter_status(adapter, "ccsonl1", NULL, 166 zfcp_ccw_activate(cdev);
168 ZFCP_STATUS_COMMON_RUNNING, ZFCP_SET);
169 zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED,
170 "ccsonl2", NULL);
171 zfcp_erp_wait(adapter);
172
173 flush_work(&adapter->scan_work);
174
175 zfcp_ccw_adapter_put(adapter); 167 zfcp_ccw_adapter_put(adapter);
176 return 0; 168 return 0;
177} 169}
@@ -190,7 +182,7 @@ static int zfcp_ccw_set_offline(struct ccw_device *cdev)
190 if (!adapter) 182 if (!adapter)
191 return 0; 183 return 0;
192 184
193 zfcp_erp_adapter_shutdown(adapter, 0, "ccsoff1", NULL); 185 zfcp_erp_adapter_shutdown(adapter, 0, "ccsoff1");
194 zfcp_erp_wait(adapter); 186 zfcp_erp_wait(adapter);
195 187
196 zfcp_ccw_adapter_put(adapter); 188 zfcp_ccw_adapter_put(adapter);
@@ -215,25 +207,24 @@ static int zfcp_ccw_notify(struct ccw_device *cdev, int event)
215 switch (event) { 207 switch (event) {
216 case CIO_GONE: 208 case CIO_GONE:
217 dev_warn(&cdev->dev, "The FCP device has been detached\n"); 209 dev_warn(&cdev->dev, "The FCP device has been detached\n");
218 zfcp_erp_adapter_shutdown(adapter, 0, "ccnoti1", NULL); 210 zfcp_erp_adapter_shutdown(adapter, 0, "ccnoti1");
219 break; 211 break;
220 case CIO_NO_PATH: 212 case CIO_NO_PATH:
221 dev_warn(&cdev->dev, 213 dev_warn(&cdev->dev,
222 "The CHPID for the FCP device is offline\n"); 214 "The CHPID for the FCP device is offline\n");
223 zfcp_erp_adapter_shutdown(adapter, 0, "ccnoti2", NULL); 215 zfcp_erp_adapter_shutdown(adapter, 0, "ccnoti2");
224 break; 216 break;
225 case CIO_OPER: 217 case CIO_OPER:
226 dev_info(&cdev->dev, "The FCP device is operational again\n"); 218 dev_info(&cdev->dev, "The FCP device is operational again\n");
227 zfcp_erp_modify_adapter_status(adapter, "ccnoti3", NULL, 219 zfcp_erp_set_adapter_status(adapter,
228 ZFCP_STATUS_COMMON_RUNNING, 220 ZFCP_STATUS_COMMON_RUNNING);
229 ZFCP_SET);
230 zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED, 221 zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED,
231 "ccnoti4", NULL); 222 "ccnoti4");
232 break; 223 break;
233 case CIO_BOXED: 224 case CIO_BOXED:
234 dev_warn(&cdev->dev, "The FCP device did not respond within " 225 dev_warn(&cdev->dev, "The FCP device did not respond within "
235 "the specified time\n"); 226 "the specified time\n");
236 zfcp_erp_adapter_shutdown(adapter, 0, "ccnoti5", NULL); 227 zfcp_erp_adapter_shutdown(adapter, 0, "ccnoti5");
237 break; 228 break;
238 } 229 }
239 230
@@ -252,7 +243,7 @@ static void zfcp_ccw_shutdown(struct ccw_device *cdev)
252 if (!adapter) 243 if (!adapter)
253 return; 244 return;
254 245
255 zfcp_erp_adapter_shutdown(adapter, 0, "ccshut1", NULL); 246 zfcp_erp_adapter_shutdown(adapter, 0, "ccshut1");
256 zfcp_erp_wait(adapter); 247 zfcp_erp_wait(adapter);
257 zfcp_erp_thread_kill(adapter); 248 zfcp_erp_thread_kill(adapter);
258 249
@@ -260,8 +251,10 @@ static void zfcp_ccw_shutdown(struct ccw_device *cdev)
260} 251}
261 252
262struct ccw_driver zfcp_ccw_driver = { 253struct ccw_driver zfcp_ccw_driver = {
263 .owner = THIS_MODULE, 254 .driver = {
264 .name = "zfcp", 255 .owner = THIS_MODULE,
256 .name = "zfcp",
257 },
265 .ids = zfcp_ccw_device_id, 258 .ids = zfcp_ccw_device_id,
266 .probe = zfcp_ccw_probe, 259 .probe = zfcp_ccw_probe,
267 .remove = zfcp_ccw_remove, 260 .remove = zfcp_ccw_remove,