diff options
Diffstat (limited to 'drivers/s390/scsi/zfcp_erp.c')
-rw-r--r-- | drivers/s390/scsi/zfcp_erp.c | 275 |
1 files changed, 33 insertions, 242 deletions
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c index 57cb628a05a..4682c8b8bd2 100644 --- a/drivers/s390/scsi/zfcp_erp.c +++ b/drivers/s390/scsi/zfcp_erp.c | |||
@@ -1,18 +1,8 @@ | |||
1 | /* | 1 | /* |
2 | * | 2 | * This file is part of the zfcp device driver for |
3 | * linux/drivers/s390/scsi/zfcp_erp.c | 3 | * FCP adapters for IBM System z9 and zSeries. |
4 | * | 4 | * |
5 | * FCP adapter driver for IBM eServer zSeries | 5 | * (C) Copyright IBM Corp. 2002, 2006 |
6 | * | ||
7 | * (C) Copyright IBM Corp. 2002, 2004 | ||
8 | * | ||
9 | * Author(s): Martin Peschke <mpeschke@de.ibm.com> | ||
10 | * Raimund Schroeder <raimund.schroeder@de.ibm.com> | ||
11 | * Aron Zeh | ||
12 | * Wolfgang Taphorn | ||
13 | * Stefan Bader <stefan.bader@de.ibm.com> | ||
14 | * Heiko Carstens <heiko.carstens@de.ibm.com> | ||
15 | * Andreas Herrmann <aherrman@de.ibm.com> | ||
16 | * | 6 | * |
17 | * This program is free software; you can redistribute it and/or modify | 7 | * This program is free software; you can redistribute it and/or modify |
18 | * it under the terms of the GNU General Public License as published by | 8 | * it under the terms of the GNU General Public License as published by |
@@ -231,13 +221,6 @@ zfcp_erp_adapter_reopen(struct zfcp_adapter *adapter, int clear_mask) | |||
231 | return retval; | 221 | return retval; |
232 | } | 222 | } |
233 | 223 | ||
234 | /* | ||
235 | * function: | ||
236 | * | ||
237 | * purpose: | ||
238 | * | ||
239 | * returns: | ||
240 | */ | ||
241 | int | 224 | int |
242 | zfcp_erp_adapter_shutdown(struct zfcp_adapter *adapter, int clear_mask) | 225 | zfcp_erp_adapter_shutdown(struct zfcp_adapter *adapter, int clear_mask) |
243 | { | 226 | { |
@@ -251,13 +234,6 @@ zfcp_erp_adapter_shutdown(struct zfcp_adapter *adapter, int clear_mask) | |||
251 | return retval; | 234 | return retval; |
252 | } | 235 | } |
253 | 236 | ||
254 | /* | ||
255 | * function: | ||
256 | * | ||
257 | * purpose: | ||
258 | * | ||
259 | * returns: | ||
260 | */ | ||
261 | int | 237 | int |
262 | zfcp_erp_port_shutdown(struct zfcp_port *port, int clear_mask) | 238 | zfcp_erp_port_shutdown(struct zfcp_port *port, int clear_mask) |
263 | { | 239 | { |
@@ -271,13 +247,6 @@ zfcp_erp_port_shutdown(struct zfcp_port *port, int clear_mask) | |||
271 | return retval; | 247 | return retval; |
272 | } | 248 | } |
273 | 249 | ||
274 | /* | ||
275 | * function: | ||
276 | * | ||
277 | * purpose: | ||
278 | * | ||
279 | * returns: | ||
280 | */ | ||
281 | int | 250 | int |
282 | zfcp_erp_unit_shutdown(struct zfcp_unit *unit, int clear_mask) | 251 | zfcp_erp_unit_shutdown(struct zfcp_unit *unit, int clear_mask) |
283 | { | 252 | { |
@@ -306,20 +275,17 @@ zfcp_erp_adisc(struct zfcp_port *port) | |||
306 | int retval = 0; | 275 | int retval = 0; |
307 | struct timer_list *timer; | 276 | struct timer_list *timer; |
308 | 277 | ||
309 | send_els = kmalloc(sizeof(struct zfcp_send_els), GFP_ATOMIC); | 278 | send_els = kzalloc(sizeof(struct zfcp_send_els), GFP_ATOMIC); |
310 | if (send_els == NULL) | 279 | if (send_els == NULL) |
311 | goto nomem; | 280 | goto nomem; |
312 | memset(send_els, 0, sizeof(*send_els)); | ||
313 | 281 | ||
314 | send_els->req = kmalloc(sizeof(struct scatterlist), GFP_ATOMIC); | 282 | send_els->req = kzalloc(sizeof(struct scatterlist), GFP_ATOMIC); |
315 | if (send_els->req == NULL) | 283 | if (send_els->req == NULL) |
316 | goto nomem; | 284 | goto nomem; |
317 | memset(send_els->req, 0, sizeof(*send_els->req)); | ||
318 | 285 | ||
319 | send_els->resp = kmalloc(sizeof(struct scatterlist), GFP_ATOMIC); | 286 | send_els->resp = kzalloc(sizeof(struct scatterlist), GFP_ATOMIC); |
320 | if (send_els->resp == NULL) | 287 | if (send_els->resp == NULL) |
321 | goto nomem; | 288 | goto nomem; |
322 | memset(send_els->resp, 0, sizeof(*send_els->resp)); | ||
323 | 289 | ||
324 | address = (void *) get_zeroed_page(GFP_ATOMIC); | 290 | address = (void *) get_zeroed_page(GFP_ATOMIC); |
325 | if (address == NULL) | 291 | if (address == NULL) |
@@ -812,13 +778,6 @@ zfcp_erp_unit_unblock(struct zfcp_unit *unit) | |||
812 | atomic_set_mask(ZFCP_STATUS_COMMON_UNBLOCKED, &unit->status); | 778 | atomic_set_mask(ZFCP_STATUS_COMMON_UNBLOCKED, &unit->status); |
813 | } | 779 | } |
814 | 780 | ||
815 | /* | ||
816 | * function: | ||
817 | * | ||
818 | * purpose: | ||
819 | * | ||
820 | * returns: | ||
821 | */ | ||
822 | static void | 781 | static void |
823 | zfcp_erp_action_ready(struct zfcp_erp_action *erp_action) | 782 | zfcp_erp_action_ready(struct zfcp_erp_action *erp_action) |
824 | { | 783 | { |
@@ -1356,13 +1315,6 @@ zfcp_erp_strategy_check_action(struct zfcp_erp_action *erp_action, int retval) | |||
1356 | return retval; | 1315 | return retval; |
1357 | } | 1316 | } |
1358 | 1317 | ||
1359 | /* | ||
1360 | * function: | ||
1361 | * | ||
1362 | * purpose: | ||
1363 | * | ||
1364 | * returns: | ||
1365 | */ | ||
1366 | static int | 1318 | static int |
1367 | zfcp_erp_strategy_do_action(struct zfcp_erp_action *erp_action) | 1319 | zfcp_erp_strategy_do_action(struct zfcp_erp_action *erp_action) |
1368 | { | 1320 | { |
@@ -1538,13 +1490,6 @@ zfcp_erp_strategy_check_target(struct zfcp_erp_action *erp_action, int result) | |||
1538 | return result; | 1490 | return result; |
1539 | } | 1491 | } |
1540 | 1492 | ||
1541 | /* | ||
1542 | * function: | ||
1543 | * | ||
1544 | * purpose: | ||
1545 | * | ||
1546 | * returns: | ||
1547 | */ | ||
1548 | static int | 1493 | static int |
1549 | zfcp_erp_strategy_statechange(int action, | 1494 | zfcp_erp_strategy_statechange(int action, |
1550 | u32 status, | 1495 | u32 status, |
@@ -1586,13 +1531,6 @@ zfcp_erp_strategy_statechange(int action, | |||
1586 | return retval; | 1531 | return retval; |
1587 | } | 1532 | } |
1588 | 1533 | ||
1589 | /* | ||
1590 | * function: | ||
1591 | * | ||
1592 | * purpose: | ||
1593 | * | ||
1594 | * returns: | ||
1595 | */ | ||
1596 | static inline int | 1534 | static inline int |
1597 | zfcp_erp_strategy_statechange_detected(atomic_t * target_status, u32 erp_status) | 1535 | zfcp_erp_strategy_statechange_detected(atomic_t * target_status, u32 erp_status) |
1598 | { | 1536 | { |
@@ -1605,13 +1543,6 @@ zfcp_erp_strategy_statechange_detected(atomic_t * target_status, u32 erp_status) | |||
1605 | !(ZFCP_STATUS_ERP_CLOSE_ONLY & erp_status)); | 1543 | !(ZFCP_STATUS_ERP_CLOSE_ONLY & erp_status)); |
1606 | } | 1544 | } |
1607 | 1545 | ||
1608 | /* | ||
1609 | * function: | ||
1610 | * | ||
1611 | * purpose: | ||
1612 | * | ||
1613 | * returns: | ||
1614 | */ | ||
1615 | static int | 1546 | static int |
1616 | zfcp_erp_strategy_check_unit(struct zfcp_unit *unit, int result) | 1547 | zfcp_erp_strategy_check_unit(struct zfcp_unit *unit, int result) |
1617 | { | 1548 | { |
@@ -1642,13 +1573,6 @@ zfcp_erp_strategy_check_unit(struct zfcp_unit *unit, int result) | |||
1642 | return result; | 1573 | return result; |
1643 | } | 1574 | } |
1644 | 1575 | ||
1645 | /* | ||
1646 | * function: | ||
1647 | * | ||
1648 | * purpose: | ||
1649 | * | ||
1650 | * returns: | ||
1651 | */ | ||
1652 | static int | 1576 | static int |
1653 | zfcp_erp_strategy_check_port(struct zfcp_port *port, int result) | 1577 | zfcp_erp_strategy_check_port(struct zfcp_port *port, int result) |
1654 | { | 1578 | { |
@@ -1678,13 +1602,6 @@ zfcp_erp_strategy_check_port(struct zfcp_port *port, int result) | |||
1678 | return result; | 1602 | return result; |
1679 | } | 1603 | } |
1680 | 1604 | ||
1681 | /* | ||
1682 | * function: | ||
1683 | * | ||
1684 | * purpose: | ||
1685 | * | ||
1686 | * returns: | ||
1687 | */ | ||
1688 | static int | 1605 | static int |
1689 | zfcp_erp_strategy_check_adapter(struct zfcp_adapter *adapter, int result) | 1606 | zfcp_erp_strategy_check_adapter(struct zfcp_adapter *adapter, int result) |
1690 | { | 1607 | { |
@@ -1764,13 +1681,6 @@ zfcp_erp_strategy_followup_actions(int action, | |||
1764 | return 0; | 1681 | return 0; |
1765 | } | 1682 | } |
1766 | 1683 | ||
1767 | /* | ||
1768 | * function: | ||
1769 | * | ||
1770 | * purpose: | ||
1771 | * | ||
1772 | * returns: | ||
1773 | */ | ||
1774 | static int | 1684 | static int |
1775 | zfcp_erp_strategy_check_queues(struct zfcp_adapter *adapter) | 1685 | zfcp_erp_strategy_check_queues(struct zfcp_adapter *adapter) |
1776 | { | 1686 | { |
@@ -1809,12 +1719,6 @@ zfcp_erp_wait(struct zfcp_adapter *adapter) | |||
1809 | return retval; | 1719 | return retval; |
1810 | } | 1720 | } |
1811 | 1721 | ||
1812 | /* | ||
1813 | * function: zfcp_erp_modify_adapter_status | ||
1814 | * | ||
1815 | * purpose: | ||
1816 | * | ||
1817 | */ | ||
1818 | void | 1722 | void |
1819 | zfcp_erp_modify_adapter_status(struct zfcp_adapter *adapter, | 1723 | zfcp_erp_modify_adapter_status(struct zfcp_adapter *adapter, |
1820 | u32 mask, int set_or_clear) | 1724 | u32 mask, int set_or_clear) |
@@ -1919,13 +1823,6 @@ zfcp_erp_port_reopen_all(struct zfcp_adapter *adapter, int clear_mask) | |||
1919 | return retval; | 1823 | return retval; |
1920 | } | 1824 | } |
1921 | 1825 | ||
1922 | /* | ||
1923 | * function: | ||
1924 | * | ||
1925 | * purpose: | ||
1926 | * | ||
1927 | * returns: FIXME | ||
1928 | */ | ||
1929 | static int | 1826 | static int |
1930 | zfcp_erp_port_reopen_all_internal(struct zfcp_adapter *adapter, int clear_mask) | 1827 | zfcp_erp_port_reopen_all_internal(struct zfcp_adapter *adapter, int clear_mask) |
1931 | { | 1828 | { |
@@ -2370,13 +2267,6 @@ zfcp_erp_adapter_strategy_open_fsf_xport(struct zfcp_erp_action *erp_action) | |||
2370 | return ret; | 2267 | return ret; |
2371 | } | 2268 | } |
2372 | 2269 | ||
2373 | /* | ||
2374 | * function: | ||
2375 | * | ||
2376 | * purpose: | ||
2377 | * | ||
2378 | * returns: | ||
2379 | */ | ||
2380 | static int | 2270 | static int |
2381 | zfcp_erp_adapter_strategy_open_fsf_statusread(struct zfcp_erp_action | 2271 | zfcp_erp_adapter_strategy_open_fsf_statusread(struct zfcp_erp_action |
2382 | *erp_action) | 2272 | *erp_action) |
@@ -2545,13 +2435,6 @@ zfcp_erp_port_strategy(struct zfcp_erp_action *erp_action) | |||
2545 | return retval; | 2435 | return retval; |
2546 | } | 2436 | } |
2547 | 2437 | ||
2548 | /* | ||
2549 | * function: | ||
2550 | * | ||
2551 | * purpose: | ||
2552 | * | ||
2553 | * returns: | ||
2554 | */ | ||
2555 | static int | 2438 | static int |
2556 | zfcp_erp_port_strategy_open(struct zfcp_erp_action *erp_action) | 2439 | zfcp_erp_port_strategy_open(struct zfcp_erp_action *erp_action) |
2557 | { | 2440 | { |
@@ -2566,15 +2449,6 @@ zfcp_erp_port_strategy_open(struct zfcp_erp_action *erp_action) | |||
2566 | return retval; | 2449 | return retval; |
2567 | } | 2450 | } |
2568 | 2451 | ||
2569 | /* | ||
2570 | * function: | ||
2571 | * | ||
2572 | * purpose: | ||
2573 | * | ||
2574 | * returns: | ||
2575 | * | ||
2576 | * FIXME(design): currently only prepared for fabric (nameserver!) | ||
2577 | */ | ||
2578 | static int | 2452 | static int |
2579 | zfcp_erp_port_strategy_open_common(struct zfcp_erp_action *erp_action) | 2453 | zfcp_erp_port_strategy_open_common(struct zfcp_erp_action *erp_action) |
2580 | { | 2454 | { |
@@ -2690,13 +2564,6 @@ zfcp_erp_port_strategy_open_common(struct zfcp_erp_action *erp_action) | |||
2690 | return retval; | 2564 | return retval; |
2691 | } | 2565 | } |
2692 | 2566 | ||
2693 | /* | ||
2694 | * function: | ||
2695 | * | ||
2696 | * purpose: | ||
2697 | * | ||
2698 | * returns: | ||
2699 | */ | ||
2700 | static int | 2567 | static int |
2701 | zfcp_erp_port_strategy_open_nameserver(struct zfcp_erp_action *erp_action) | 2568 | zfcp_erp_port_strategy_open_nameserver(struct zfcp_erp_action *erp_action) |
2702 | { | 2569 | { |
@@ -2813,13 +2680,6 @@ zfcp_erp_port_forced_strategy_close(struct zfcp_erp_action *erp_action) | |||
2813 | return retval; | 2680 | return retval; |
2814 | } | 2681 | } |
2815 | 2682 | ||
2816 | /* | ||
2817 | * function: | ||
2818 | * | ||
2819 | * purpose: | ||
2820 | * | ||
2821 | * returns: | ||
2822 | */ | ||
2823 | static int | 2683 | static int |
2824 | zfcp_erp_port_strategy_clearstati(struct zfcp_port *port) | 2684 | zfcp_erp_port_strategy_clearstati(struct zfcp_port *port) |
2825 | { | 2685 | { |
@@ -3022,13 +2882,6 @@ zfcp_erp_unit_strategy(struct zfcp_erp_action *erp_action) | |||
3022 | return retval; | 2882 | return retval; |
3023 | } | 2883 | } |
3024 | 2884 | ||
3025 | /* | ||
3026 | * function: | ||
3027 | * | ||
3028 | * purpose: | ||
3029 | * | ||
3030 | * returns: | ||
3031 | */ | ||
3032 | static int | 2885 | static int |
3033 | zfcp_erp_unit_strategy_clearstati(struct zfcp_unit *unit) | 2886 | zfcp_erp_unit_strategy_clearstati(struct zfcp_unit *unit) |
3034 | { | 2887 | { |
@@ -3129,13 +2982,6 @@ zfcp_erp_unit_strategy_open(struct zfcp_erp_action *erp_action) | |||
3129 | return retval; | 2982 | return retval; |
3130 | } | 2983 | } |
3131 | 2984 | ||
3132 | /* | ||
3133 | * function: | ||
3134 | * | ||
3135 | * purpose: | ||
3136 | * | ||
3137 | * returns: | ||
3138 | */ | ||
3139 | static inline void | 2985 | static inline void |
3140 | zfcp_erp_timeout_init(struct zfcp_erp_action *erp_action) | 2986 | zfcp_erp_timeout_init(struct zfcp_erp_action *erp_action) |
3141 | { | 2987 | { |
@@ -3331,13 +3177,6 @@ zfcp_erp_action_enqueue(int action, | |||
3331 | return retval; | 3177 | return retval; |
3332 | } | 3178 | } |
3333 | 3179 | ||
3334 | /* | ||
3335 | * function: | ||
3336 | * | ||
3337 | * purpose: | ||
3338 | * | ||
3339 | * returns: | ||
3340 | */ | ||
3341 | static int | 3180 | static int |
3342 | zfcp_erp_action_dequeue(struct zfcp_erp_action *erp_action) | 3181 | zfcp_erp_action_dequeue(struct zfcp_erp_action *erp_action) |
3343 | { | 3182 | { |
@@ -3402,9 +3241,13 @@ zfcp_erp_action_cleanup(int action, struct zfcp_adapter *adapter, | |||
3402 | break; | 3241 | break; |
3403 | case ZFCP_ERP_ACTION_REOPEN_PORT_FORCED: | 3242 | case ZFCP_ERP_ACTION_REOPEN_PORT_FORCED: |
3404 | case ZFCP_ERP_ACTION_REOPEN_PORT: | 3243 | case ZFCP_ERP_ACTION_REOPEN_PORT: |
3244 | if (atomic_test_mask(ZFCP_STATUS_PORT_NO_WWPN, | ||
3245 | &port->status)) { | ||
3246 | zfcp_port_put(port); | ||
3247 | break; | ||
3248 | } | ||
3249 | |||
3405 | if ((result == ZFCP_ERP_SUCCEEDED) | 3250 | if ((result == ZFCP_ERP_SUCCEEDED) |
3406 | && !atomic_test_mask(ZFCP_STATUS_PORT_NO_WWPN, | ||
3407 | &port->status) | ||
3408 | && !port->rport) { | 3251 | && !port->rport) { |
3409 | struct fc_rport_identifiers ids; | 3252 | struct fc_rport_identifiers ids; |
3410 | ids.node_name = port->wwnn; | 3253 | ids.node_name = port->wwnn; |
@@ -3418,12 +3261,30 @@ zfcp_erp_action_cleanup(int action, struct zfcp_adapter *adapter, | |||
3418 | "(adapter %s, wwpn=0x%016Lx)\n", | 3261 | "(adapter %s, wwpn=0x%016Lx)\n", |
3419 | zfcp_get_busid_by_port(port), | 3262 | zfcp_get_busid_by_port(port), |
3420 | port->wwpn); | 3263 | port->wwpn); |
3421 | else | 3264 | else { |
3422 | scsi_flush_work(adapter->scsi_host); | 3265 | scsi_flush_work(adapter->scsi_host); |
3266 | port->rport->maxframe_size = port->maxframe_size; | ||
3267 | port->rport->supported_classes = | ||
3268 | port->supported_classes; | ||
3269 | } | ||
3270 | } | ||
3271 | if ((result != ZFCP_ERP_SUCCEEDED) && port->rport) { | ||
3272 | fc_remote_port_delete(port->rport); | ||
3273 | port->rport = NULL; | ||
3423 | } | 3274 | } |
3424 | zfcp_port_put(port); | 3275 | zfcp_port_put(port); |
3425 | break; | 3276 | break; |
3426 | case ZFCP_ERP_ACTION_REOPEN_ADAPTER: | 3277 | case ZFCP_ERP_ACTION_REOPEN_ADAPTER: |
3278 | if (result != ZFCP_ERP_SUCCEEDED) { | ||
3279 | struct zfcp_port *port; | ||
3280 | list_for_each_entry(port, &adapter->port_list_head, list) | ||
3281 | if (port->rport && | ||
3282 | !atomic_test_mask(ZFCP_STATUS_PORT_WKA, | ||
3283 | &port->status)) { | ||
3284 | fc_remote_port_delete(port->rport); | ||
3285 | port->rport = NULL; | ||
3286 | } | ||
3287 | } | ||
3427 | zfcp_adapter_put(adapter); | 3288 | zfcp_adapter_put(adapter); |
3428 | break; | 3289 | break; |
3429 | default: | 3290 | default: |
@@ -3432,13 +3293,6 @@ zfcp_erp_action_cleanup(int action, struct zfcp_adapter *adapter, | |||
3432 | } | 3293 | } |
3433 | 3294 | ||
3434 | 3295 | ||
3435 | /* | ||
3436 | * function: | ||
3437 | * | ||
3438 | * purpose: | ||
3439 | * | ||
3440 | * returns: FIXME | ||
3441 | */ | ||
3442 | static int | 3296 | static int |
3443 | zfcp_erp_action_dismiss_adapter(struct zfcp_adapter *adapter) | 3297 | zfcp_erp_action_dismiss_adapter(struct zfcp_adapter *adapter) |
3444 | { | 3298 | { |
@@ -3455,13 +3309,6 @@ zfcp_erp_action_dismiss_adapter(struct zfcp_adapter *adapter) | |||
3455 | return retval; | 3309 | return retval; |
3456 | } | 3310 | } |
3457 | 3311 | ||
3458 | /* | ||
3459 | * function: | ||
3460 | * | ||
3461 | * purpose: | ||
3462 | * | ||
3463 | * returns: FIXME | ||
3464 | */ | ||
3465 | static int | 3312 | static int |
3466 | zfcp_erp_action_dismiss_port(struct zfcp_port *port) | 3313 | zfcp_erp_action_dismiss_port(struct zfcp_port *port) |
3467 | { | 3314 | { |
@@ -3480,13 +3327,6 @@ zfcp_erp_action_dismiss_port(struct zfcp_port *port) | |||
3480 | return retval; | 3327 | return retval; |
3481 | } | 3328 | } |
3482 | 3329 | ||
3483 | /* | ||
3484 | * function: | ||
3485 | * | ||
3486 | * purpose: | ||
3487 | * | ||
3488 | * returns: FIXME | ||
3489 | */ | ||
3490 | static int | 3330 | static int |
3491 | zfcp_erp_action_dismiss_unit(struct zfcp_unit *unit) | 3331 | zfcp_erp_action_dismiss_unit(struct zfcp_unit *unit) |
3492 | { | 3332 | { |
@@ -3501,13 +3341,6 @@ zfcp_erp_action_dismiss_unit(struct zfcp_unit *unit) | |||
3501 | return retval; | 3341 | return retval; |
3502 | } | 3342 | } |
3503 | 3343 | ||
3504 | /* | ||
3505 | * function: | ||
3506 | * | ||
3507 | * purpose: moves erp_action to 'erp running list' | ||
3508 | * | ||
3509 | * returns: | ||
3510 | */ | ||
3511 | static inline void | 3344 | static inline void |
3512 | zfcp_erp_action_to_running(struct zfcp_erp_action *erp_action) | 3345 | zfcp_erp_action_to_running(struct zfcp_erp_action *erp_action) |
3513 | { | 3346 | { |
@@ -3518,13 +3351,6 @@ zfcp_erp_action_to_running(struct zfcp_erp_action *erp_action) | |||
3518 | list_move(&erp_action->list, &erp_action->adapter->erp_running_head); | 3351 | list_move(&erp_action->list, &erp_action->adapter->erp_running_head); |
3519 | } | 3352 | } |
3520 | 3353 | ||
3521 | /* | ||
3522 | * function: | ||
3523 | * | ||
3524 | * purpose: moves erp_action to 'erp ready list' | ||
3525 | * | ||
3526 | * returns: | ||
3527 | */ | ||
3528 | static inline void | 3354 | static inline void |
3529 | zfcp_erp_action_to_ready(struct zfcp_erp_action *erp_action) | 3355 | zfcp_erp_action_to_ready(struct zfcp_erp_action *erp_action) |
3530 | { | 3356 | { |
@@ -3535,11 +3361,6 @@ zfcp_erp_action_to_ready(struct zfcp_erp_action *erp_action) | |||
3535 | list_move(&erp_action->list, &erp_action->adapter->erp_ready_head); | 3361 | list_move(&erp_action->list, &erp_action->adapter->erp_ready_head); |
3536 | } | 3362 | } |
3537 | 3363 | ||
3538 | /* | ||
3539 | * function: zfcp_erp_port_boxed | ||
3540 | * | ||
3541 | * purpose: | ||
3542 | */ | ||
3543 | void | 3364 | void |
3544 | zfcp_erp_port_boxed(struct zfcp_port *port) | 3365 | zfcp_erp_port_boxed(struct zfcp_port *port) |
3545 | { | 3366 | { |
@@ -3556,11 +3377,6 @@ zfcp_erp_port_boxed(struct zfcp_port *port) | |||
3556 | zfcp_erp_port_reopen(port, ZFCP_STATUS_COMMON_ERP_FAILED); | 3377 | zfcp_erp_port_reopen(port, ZFCP_STATUS_COMMON_ERP_FAILED); |
3557 | } | 3378 | } |
3558 | 3379 | ||
3559 | /* | ||
3560 | * function: zfcp_erp_unit_boxed | ||
3561 | * | ||
3562 | * purpose: | ||
3563 | */ | ||
3564 | void | 3380 | void |
3565 | zfcp_erp_unit_boxed(struct zfcp_unit *unit) | 3381 | zfcp_erp_unit_boxed(struct zfcp_unit *unit) |
3566 | { | 3382 | { |
@@ -3574,11 +3390,6 @@ zfcp_erp_unit_boxed(struct zfcp_unit *unit) | |||
3574 | zfcp_erp_unit_reopen(unit, ZFCP_STATUS_COMMON_ERP_FAILED); | 3390 | zfcp_erp_unit_reopen(unit, ZFCP_STATUS_COMMON_ERP_FAILED); |
3575 | } | 3391 | } |
3576 | 3392 | ||
3577 | /* | ||
3578 | * function: zfcp_erp_port_access_denied | ||
3579 | * | ||
3580 | * purpose: | ||
3581 | */ | ||
3582 | void | 3393 | void |
3583 | zfcp_erp_port_access_denied(struct zfcp_port *port) | 3394 | zfcp_erp_port_access_denied(struct zfcp_port *port) |
3584 | { | 3395 | { |
@@ -3595,11 +3406,6 @@ zfcp_erp_port_access_denied(struct zfcp_port *port) | |||
3595 | read_unlock_irqrestore(&zfcp_data.config_lock, flags); | 3406 | read_unlock_irqrestore(&zfcp_data.config_lock, flags); |
3596 | } | 3407 | } |
3597 | 3408 | ||
3598 | /* | ||
3599 | * function: zfcp_erp_unit_access_denied | ||
3600 | * | ||
3601 | * purpose: | ||
3602 | */ | ||
3603 | void | 3409 | void |
3604 | zfcp_erp_unit_access_denied(struct zfcp_unit *unit) | 3410 | zfcp_erp_unit_access_denied(struct zfcp_unit *unit) |
3605 | { | 3411 | { |
@@ -3613,11 +3419,6 @@ zfcp_erp_unit_access_denied(struct zfcp_unit *unit) | |||
3613 | ZFCP_SET); | 3419 | ZFCP_SET); |
3614 | } | 3420 | } |
3615 | 3421 | ||
3616 | /* | ||
3617 | * function: zfcp_erp_adapter_access_changed | ||
3618 | * | ||
3619 | * purpose: | ||
3620 | */ | ||
3621 | void | 3422 | void |
3622 | zfcp_erp_adapter_access_changed(struct zfcp_adapter *adapter) | 3423 | zfcp_erp_adapter_access_changed(struct zfcp_adapter *adapter) |
3623 | { | 3424 | { |
@@ -3628,7 +3429,7 @@ zfcp_erp_adapter_access_changed(struct zfcp_adapter *adapter) | |||
3628 | return; | 3429 | return; |
3629 | 3430 | ||
3630 | debug_text_event(adapter->erp_dbf, 3, "a_access_recover"); | 3431 | debug_text_event(adapter->erp_dbf, 3, "a_access_recover"); |
3631 | debug_event(adapter->erp_dbf, 3, &adapter->name, 8); | 3432 | debug_event(adapter->erp_dbf, 3, zfcp_get_busid_by_adapter(adapter), 8); |
3632 | 3433 | ||
3633 | read_lock_irqsave(&zfcp_data.config_lock, flags); | 3434 | read_lock_irqsave(&zfcp_data.config_lock, flags); |
3634 | if (adapter->nameserver_port) | 3435 | if (adapter->nameserver_port) |
@@ -3639,11 +3440,6 @@ zfcp_erp_adapter_access_changed(struct zfcp_adapter *adapter) | |||
3639 | read_unlock_irqrestore(&zfcp_data.config_lock, flags); | 3440 | read_unlock_irqrestore(&zfcp_data.config_lock, flags); |
3640 | } | 3441 | } |
3641 | 3442 | ||
3642 | /* | ||
3643 | * function: zfcp_erp_port_access_changed | ||
3644 | * | ||
3645 | * purpose: | ||
3646 | */ | ||
3647 | void | 3443 | void |
3648 | zfcp_erp_port_access_changed(struct zfcp_port *port) | 3444 | zfcp_erp_port_access_changed(struct zfcp_port *port) |
3649 | { | 3445 | { |
@@ -3672,11 +3468,6 @@ zfcp_erp_port_access_changed(struct zfcp_port *port) | |||
3672 | zfcp_get_busid_by_adapter(adapter), port->wwpn); | 3468 | zfcp_get_busid_by_adapter(adapter), port->wwpn); |
3673 | } | 3469 | } |
3674 | 3470 | ||
3675 | /* | ||
3676 | * function: zfcp_erp_unit_access_changed | ||
3677 | * | ||
3678 | * purpose: | ||
3679 | */ | ||
3680 | void | 3471 | void |
3681 | zfcp_erp_unit_access_changed(struct zfcp_unit *unit) | 3472 | zfcp_erp_unit_access_changed(struct zfcp_unit *unit) |
3682 | { | 3473 | { |