diff options
author | Swen Schillig <swen@vnet.ibm.com> | 2009-03-02 07:09:04 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2009-03-12 13:58:20 -0400 |
commit | 5ffd51a5e495a2a002efd523aef0001912b080bd (patch) | |
tree | 422e72fe3674c230a9d8e5cebe71f902ac7f0bec /drivers/s390 | |
parent | cf13c08223148e525d28f4a740f2e73518ec6abe (diff) |
[SCSI] zfcp: replace current ERP logging with a more convenient version
The current number based id ERP logging is replaced by a string
based tag version. The benefit is an easier location of the code in
question and the removal of the lengthy array referencing the
individual messages.
The string (7 bytes) based version does not use more space since those
bytes were "used" anyway due to the alignment of the structure.
The encoding of the 7 byte string is as follows
[0-1] = filename
[2-5] = task/function
[6] = section
Due to the character of this string (fixed length) a string
termination is not required here.
Signed-off-by: Swen Schillig <swen@vnet.ibm.com>
Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/scsi/zfcp_aux.c | 3 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_ccw.c | 18 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_dbf.c | 188 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_dbf.h | 3 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_erp.c | 137 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_ext.h | 55 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_fc.c | 14 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_fsf.c | 131 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_qdio.c | 6 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_scsi.c | 4 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_sysfs.c | 12 |
11 files changed, 215 insertions, 356 deletions
diff --git a/drivers/s390/scsi/zfcp_aux.c b/drivers/s390/scsi/zfcp_aux.c index 1e16ab58b242..69a31187e54d 100644 --- a/drivers/s390/scsi/zfcp_aux.c +++ b/drivers/s390/scsi/zfcp_aux.c | |||
@@ -421,7 +421,8 @@ int zfcp_status_read_refill(struct zfcp_adapter *adapter) | |||
421 | while (atomic_read(&adapter->stat_miss) > 0) | 421 | while (atomic_read(&adapter->stat_miss) > 0) |
422 | if (zfcp_fsf_status_read(adapter)) { | 422 | if (zfcp_fsf_status_read(adapter)) { |
423 | if (atomic_read(&adapter->stat_miss) >= 16) { | 423 | if (atomic_read(&adapter->stat_miss) >= 16) { |
424 | zfcp_erp_adapter_reopen(adapter, 0, 103, NULL); | 424 | zfcp_erp_adapter_reopen(adapter, 0, "axsref1", |
425 | NULL); | ||
425 | return 1; | 426 | return 1; |
426 | } | 427 | } |
427 | break; | 428 | break; |
diff --git a/drivers/s390/scsi/zfcp_ccw.c b/drivers/s390/scsi/zfcp_ccw.c index 683ac4ed5e56..3aeef289fe7c 100644 --- a/drivers/s390/scsi/zfcp_ccw.c +++ b/drivers/s390/scsi/zfcp_ccw.c | |||
@@ -109,10 +109,10 @@ static int zfcp_ccw_set_online(struct ccw_device *ccw_device) | |||
109 | BUG_ON(!zfcp_reqlist_isempty(adapter)); | 109 | BUG_ON(!zfcp_reqlist_isempty(adapter)); |
110 | adapter->req_no = 0; | 110 | adapter->req_no = 0; |
111 | 111 | ||
112 | zfcp_erp_modify_adapter_status(adapter, 10, NULL, | 112 | zfcp_erp_modify_adapter_status(adapter, "ccsonl1", NULL, |
113 | ZFCP_STATUS_COMMON_RUNNING, ZFCP_SET); | 113 | ZFCP_STATUS_COMMON_RUNNING, ZFCP_SET); |
114 | zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED, 85, | 114 | zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED, |
115 | NULL); | 115 | "ccsonl2", NULL); |
116 | zfcp_erp_wait(adapter); | 116 | zfcp_erp_wait(adapter); |
117 | up(&zfcp_data.config_sema); | 117 | up(&zfcp_data.config_sema); |
118 | flush_work(&adapter->scan_work); | 118 | flush_work(&adapter->scan_work); |
@@ -136,7 +136,7 @@ static int zfcp_ccw_set_offline(struct ccw_device *ccw_device) | |||
136 | 136 | ||
137 | down(&zfcp_data.config_sema); | 137 | down(&zfcp_data.config_sema); |
138 | adapter = dev_get_drvdata(&ccw_device->dev); | 138 | adapter = dev_get_drvdata(&ccw_device->dev); |
139 | zfcp_erp_adapter_shutdown(adapter, 0, 86, NULL); | 139 | zfcp_erp_adapter_shutdown(adapter, 0, "ccsoff1", NULL); |
140 | zfcp_erp_wait(adapter); | 140 | zfcp_erp_wait(adapter); |
141 | zfcp_erp_thread_kill(adapter); | 141 | zfcp_erp_thread_kill(adapter); |
142 | up(&zfcp_data.config_sema); | 142 | up(&zfcp_data.config_sema); |
@@ -159,21 +159,21 @@ static int zfcp_ccw_notify(struct ccw_device *ccw_device, int event) | |||
159 | case CIO_GONE: | 159 | case CIO_GONE: |
160 | dev_warn(&adapter->ccw_device->dev, | 160 | dev_warn(&adapter->ccw_device->dev, |
161 | "The FCP device has been detached\n"); | 161 | "The FCP device has been detached\n"); |
162 | zfcp_erp_adapter_shutdown(adapter, 0, 87, NULL); | 162 | zfcp_erp_adapter_shutdown(adapter, 0, "ccnoti1", NULL); |
163 | break; | 163 | break; |
164 | case CIO_NO_PATH: | 164 | case CIO_NO_PATH: |
165 | dev_warn(&adapter->ccw_device->dev, | 165 | dev_warn(&adapter->ccw_device->dev, |
166 | "The CHPID for the FCP device is offline\n"); | 166 | "The CHPID for the FCP device is offline\n"); |
167 | zfcp_erp_adapter_shutdown(adapter, 0, 88, NULL); | 167 | zfcp_erp_adapter_shutdown(adapter, 0, "ccnoti2", NULL); |
168 | break; | 168 | break; |
169 | case CIO_OPER: | 169 | case CIO_OPER: |
170 | dev_info(&adapter->ccw_device->dev, | 170 | dev_info(&adapter->ccw_device->dev, |
171 | "The FCP device is operational again\n"); | 171 | "The FCP device is operational again\n"); |
172 | zfcp_erp_modify_adapter_status(adapter, 11, NULL, | 172 | zfcp_erp_modify_adapter_status(adapter, "ccnoti3", NULL, |
173 | ZFCP_STATUS_COMMON_RUNNING, | 173 | ZFCP_STATUS_COMMON_RUNNING, |
174 | ZFCP_SET); | 174 | ZFCP_SET); |
175 | zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED, | 175 | zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED, |
176 | 89, NULL); | 176 | "ccnoti4", NULL); |
177 | break; | 177 | break; |
178 | } | 178 | } |
179 | return 1; | 179 | return 1; |
@@ -189,7 +189,7 @@ static void zfcp_ccw_shutdown(struct ccw_device *cdev) | |||
189 | 189 | ||
190 | down(&zfcp_data.config_sema); | 190 | down(&zfcp_data.config_sema); |
191 | adapter = dev_get_drvdata(&cdev->dev); | 191 | adapter = dev_get_drvdata(&cdev->dev); |
192 | zfcp_erp_adapter_shutdown(adapter, 0, 90, NULL); | 192 | zfcp_erp_adapter_shutdown(adapter, 0, "ccshut1", NULL); |
193 | zfcp_erp_wait(adapter); | 193 | zfcp_erp_wait(adapter); |
194 | up(&zfcp_data.config_sema); | 194 | up(&zfcp_data.config_sema); |
195 | } | 195 | } |
diff --git a/drivers/s390/scsi/zfcp_dbf.c b/drivers/s390/scsi/zfcp_dbf.c index ab843f23d428..0a1a5dd8d018 100644 --- a/drivers/s390/scsi/zfcp_dbf.c +++ b/drivers/s390/scsi/zfcp_dbf.c | |||
@@ -490,172 +490,17 @@ static const char *zfcp_rec_dbf_tags[] = { | |||
490 | [ZFCP_REC_DBF_ID_ACTION] = "action", | 490 | [ZFCP_REC_DBF_ID_ACTION] = "action", |
491 | }; | 491 | }; |
492 | 492 | ||
493 | static const char *zfcp_rec_dbf_ids[] = { | ||
494 | [1] = "new", | ||
495 | [2] = "ready", | ||
496 | [3] = "kill", | ||
497 | [4] = "down sleep", | ||
498 | [5] = "down wakeup", | ||
499 | [6] = "down sleep ecd", | ||
500 | [7] = "down wakeup ecd", | ||
501 | [8] = "down sleep epd", | ||
502 | [9] = "down wakeup epd", | ||
503 | [10] = "online", | ||
504 | [11] = "operational", | ||
505 | [12] = "scsi slave destroy", | ||
506 | [13] = "propagate failed adapter", | ||
507 | [14] = "propagate failed port", | ||
508 | [15] = "block adapter", | ||
509 | [16] = "unblock adapter", | ||
510 | [17] = "block port", | ||
511 | [18] = "unblock port", | ||
512 | [19] = "block unit", | ||
513 | [20] = "unblock unit", | ||
514 | [21] = "unit recovery failed", | ||
515 | [22] = "port recovery failed", | ||
516 | [23] = "adapter recovery failed", | ||
517 | [24] = "qdio queues down", | ||
518 | [25] = "p2p failed", | ||
519 | [26] = "nameserver lookup failed", | ||
520 | [27] = "nameserver port failed", | ||
521 | [28] = "link up", | ||
522 | [29] = "link down", | ||
523 | [30] = "link up status read", | ||
524 | [31] = "open port failed", | ||
525 | [32] = "", | ||
526 | [33] = "close port", | ||
527 | [34] = "open unit failed", | ||
528 | [35] = "exclusive open unit failed", | ||
529 | [36] = "shared open unit failed", | ||
530 | [37] = "link down", | ||
531 | [38] = "link down status read no link", | ||
532 | [39] = "link down status read fdisc login", | ||
533 | [40] = "link down status read firmware update", | ||
534 | [41] = "link down status read unknown reason", | ||
535 | [42] = "link down ecd incomplete", | ||
536 | [43] = "link down epd incomplete", | ||
537 | [44] = "sysfs adapter recovery", | ||
538 | [45] = "sysfs port recovery", | ||
539 | [46] = "sysfs unit recovery", | ||
540 | [47] = "port boxed abort", | ||
541 | [48] = "unit boxed abort", | ||
542 | [49] = "port boxed ct", | ||
543 | [50] = "port boxed close physical", | ||
544 | [51] = "port boxed open unit", | ||
545 | [52] = "port boxed close unit", | ||
546 | [53] = "port boxed fcp", | ||
547 | [54] = "unit boxed fcp", | ||
548 | [55] = "port access denied", | ||
549 | [56] = "", | ||
550 | [57] = "", | ||
551 | [58] = "", | ||
552 | [59] = "unit access denied", | ||
553 | [60] = "shared unit access denied open unit", | ||
554 | [61] = "", | ||
555 | [62] = "request timeout", | ||
556 | [63] = "adisc link test reject or timeout", | ||
557 | [64] = "adisc link test d_id changed", | ||
558 | [65] = "adisc link test failed", | ||
559 | [66] = "recovery out of memory", | ||
560 | [67] = "adapter recovery repeated after state change", | ||
561 | [68] = "port recovery repeated after state change", | ||
562 | [69] = "unit recovery repeated after state change", | ||
563 | [70] = "port recovery follow-up after successful adapter recovery", | ||
564 | [71] = "adapter recovery escalation after failed adapter recovery", | ||
565 | [72] = "port recovery follow-up after successful physical port " | ||
566 | "recovery", | ||
567 | [73] = "adapter recovery escalation after failed physical port " | ||
568 | "recovery", | ||
569 | [74] = "unit recovery follow-up after successful port recovery", | ||
570 | [75] = "physical port recovery escalation after failed port " | ||
571 | "recovery", | ||
572 | [76] = "port recovery escalation after failed unit recovery", | ||
573 | [77] = "", | ||
574 | [78] = "duplicate request id", | ||
575 | [79] = "link down", | ||
576 | [80] = "exclusive read-only unit access unsupported", | ||
577 | [81] = "shared read-write unit access unsupported", | ||
578 | [82] = "incoming rscn", | ||
579 | [83] = "incoming wwpn", | ||
580 | [84] = "wka port handle not valid close port", | ||
581 | [85] = "online", | ||
582 | [86] = "offline", | ||
583 | [87] = "ccw device gone", | ||
584 | [88] = "ccw device no path", | ||
585 | [89] = "ccw device operational", | ||
586 | [90] = "ccw device shutdown", | ||
587 | [91] = "sysfs port addition", | ||
588 | [92] = "sysfs port removal", | ||
589 | [93] = "sysfs adapter recovery", | ||
590 | [94] = "sysfs unit addition", | ||
591 | [95] = "sysfs unit removal", | ||
592 | [96] = "sysfs port recovery", | ||
593 | [97] = "sysfs unit recovery", | ||
594 | [98] = "sequence number mismatch", | ||
595 | [99] = "link up", | ||
596 | [100] = "error state", | ||
597 | [101] = "status read physical port closed", | ||
598 | [102] = "link up status read", | ||
599 | [103] = "too many failed status read buffers", | ||
600 | [104] = "port handle not valid abort", | ||
601 | [105] = "lun handle not valid abort", | ||
602 | [106] = "port handle not valid ct", | ||
603 | [107] = "port handle not valid close port", | ||
604 | [108] = "port handle not valid close physical port", | ||
605 | [109] = "port handle not valid open unit", | ||
606 | [110] = "port handle not valid close unit", | ||
607 | [111] = "lun handle not valid close unit", | ||
608 | [112] = "port handle not valid fcp", | ||
609 | [113] = "lun handle not valid fcp", | ||
610 | [114] = "handle mismatch fcp", | ||
611 | [115] = "lun not valid fcp", | ||
612 | [116] = "qdio send failed", | ||
613 | [117] = "version mismatch", | ||
614 | [118] = "incompatible qtcb type", | ||
615 | [119] = "unknown protocol status", | ||
616 | [120] = "unknown fsf command", | ||
617 | [121] = "no recommendation for status qualifier", | ||
618 | [122] = "", | ||
619 | [123] = "fc service class not supported", | ||
620 | [124] = "", | ||
621 | [125] = "need newer zfcp", | ||
622 | [126] = "need newer microcode", | ||
623 | [127] = "arbitrated loop not supported", | ||
624 | [128] = "", | ||
625 | [129] = "qtcb size mismatch", | ||
626 | [130] = "unknown fsf status ecd", | ||
627 | [131] = "fcp request too big", | ||
628 | [132] = "", | ||
629 | [133] = "data direction not valid fcp", | ||
630 | [134] = "command length not valid fcp", | ||
631 | [135] = "status read act update", | ||
632 | [136] = "status read cfdc update", | ||
633 | [137] = "hbaapi port open", | ||
634 | [138] = "hbaapi unit open", | ||
635 | [139] = "hbaapi unit shutdown", | ||
636 | [140] = "qdio error outbound", | ||
637 | [141] = "scsi host reset", | ||
638 | [142] = "dismissing fsf request for recovery action", | ||
639 | [143] = "recovery action timed out", | ||
640 | [144] = "recovery action gone", | ||
641 | [145] = "recovery action being processed", | ||
642 | [146] = "recovery action ready for next step", | ||
643 | [147] = "qdio error inbound", | ||
644 | [148] = "nameserver needed for port scan", | ||
645 | [149] = "port scan", | ||
646 | [150] = "ptp attach", | ||
647 | [151] = "port validation failed", | ||
648 | }; | ||
649 | |||
650 | static int zfcp_rec_dbf_view_format(debug_info_t *id, struct debug_view *view, | 493 | static int zfcp_rec_dbf_view_format(debug_info_t *id, struct debug_view *view, |
651 | char *buf, const char *_rec) | 494 | char *buf, const char *_rec) |
652 | { | 495 | { |
653 | struct zfcp_rec_dbf_record *r = (struct zfcp_rec_dbf_record *)_rec; | 496 | struct zfcp_rec_dbf_record *r = (struct zfcp_rec_dbf_record *)_rec; |
654 | char *p = buf; | 497 | char *p = buf; |
498 | char hint[ZFCP_DBF_ID_SIZE + 1]; | ||
655 | 499 | ||
500 | memcpy(hint, r->id2, ZFCP_DBF_ID_SIZE); | ||
501 | hint[ZFCP_DBF_ID_SIZE] = 0; | ||
656 | zfcp_dbf_outs(&p, "tag", zfcp_rec_dbf_tags[r->id]); | 502 | zfcp_dbf_outs(&p, "tag", zfcp_rec_dbf_tags[r->id]); |
657 | zfcp_dbf_outs(&p, "hint", zfcp_rec_dbf_ids[r->id2]); | 503 | zfcp_dbf_outs(&p, "hint", hint); |
658 | zfcp_dbf_out(&p, "id", "%d", r->id2); | ||
659 | switch (r->id) { | 504 | switch (r->id) { |
660 | case ZFCP_REC_DBF_ID_THREAD: | 505 | case ZFCP_REC_DBF_ID_THREAD: |
661 | zfcp_dbf_out(&p, "total", "%d", r->u.thread.total); | 506 | zfcp_dbf_out(&p, "total", "%d", r->u.thread.total); |
@@ -707,7 +552,7 @@ static struct debug_view zfcp_rec_dbf_view = { | |||
707 | * @adapter: adapter | 552 | * @adapter: adapter |
708 | * This function assumes that the caller is holding erp_lock. | 553 | * This function assumes that the caller is holding erp_lock. |
709 | */ | 554 | */ |
710 | void zfcp_rec_dbf_event_thread(u8 id2, struct zfcp_adapter *adapter) | 555 | void zfcp_rec_dbf_event_thread(char *id2, struct zfcp_adapter *adapter) |
711 | { | 556 | { |
712 | struct zfcp_rec_dbf_record *r = &adapter->rec_dbf_buf; | 557 | struct zfcp_rec_dbf_record *r = &adapter->rec_dbf_buf; |
713 | unsigned long flags = 0; | 558 | unsigned long flags = 0; |
@@ -723,7 +568,7 @@ void zfcp_rec_dbf_event_thread(u8 id2, struct zfcp_adapter *adapter) | |||
723 | spin_lock_irqsave(&adapter->rec_dbf_lock, flags); | 568 | spin_lock_irqsave(&adapter->rec_dbf_lock, flags); |
724 | memset(r, 0, sizeof(*r)); | 569 | memset(r, 0, sizeof(*r)); |
725 | r->id = ZFCP_REC_DBF_ID_THREAD; | 570 | r->id = ZFCP_REC_DBF_ID_THREAD; |
726 | r->id2 = id2; | 571 | memcpy(r->id2, id2, ZFCP_DBF_ID_SIZE); |
727 | r->u.thread.total = total; | 572 | r->u.thread.total = total; |
728 | r->u.thread.ready = ready; | 573 | r->u.thread.ready = ready; |
729 | r->u.thread.running = running; | 574 | r->u.thread.running = running; |
@@ -737,7 +582,7 @@ void zfcp_rec_dbf_event_thread(u8 id2, struct zfcp_adapter *adapter) | |||
737 | * @adapter: adapter | 582 | * @adapter: adapter |
738 | * This function assumes that the caller does not hold erp_lock. | 583 | * This function assumes that the caller does not hold erp_lock. |
739 | */ | 584 | */ |
740 | void zfcp_rec_dbf_event_thread_lock(u8 id2, struct zfcp_adapter *adapter) | 585 | void zfcp_rec_dbf_event_thread_lock(char *id2, struct zfcp_adapter *adapter) |
741 | { | 586 | { |
742 | unsigned long flags; | 587 | unsigned long flags; |
743 | 588 | ||
@@ -746,7 +591,7 @@ void zfcp_rec_dbf_event_thread_lock(u8 id2, struct zfcp_adapter *adapter) | |||
746 | read_unlock_irqrestore(&adapter->erp_lock, flags); | 591 | read_unlock_irqrestore(&adapter->erp_lock, flags); |
747 | } | 592 | } |
748 | 593 | ||
749 | static void zfcp_rec_dbf_event_target(u8 id2, void *ref, | 594 | static void zfcp_rec_dbf_event_target(char *id2, void *ref, |
750 | struct zfcp_adapter *adapter, | 595 | struct zfcp_adapter *adapter, |
751 | atomic_t *status, atomic_t *erp_count, | 596 | atomic_t *status, atomic_t *erp_count, |
752 | u64 wwpn, u32 d_id, u64 fcp_lun) | 597 | u64 wwpn, u32 d_id, u64 fcp_lun) |
@@ -757,7 +602,7 @@ static void zfcp_rec_dbf_event_target(u8 id2, void *ref, | |||
757 | spin_lock_irqsave(&adapter->rec_dbf_lock, flags); | 602 | spin_lock_irqsave(&adapter->rec_dbf_lock, flags); |
758 | memset(r, 0, sizeof(*r)); | 603 | memset(r, 0, sizeof(*r)); |
759 | r->id = ZFCP_REC_DBF_ID_TARGET; | 604 | r->id = ZFCP_REC_DBF_ID_TARGET; |
760 | r->id2 = id2; | 605 | memcpy(r->id2, id2, ZFCP_DBF_ID_SIZE); |
761 | r->u.target.ref = (unsigned long)ref; | 606 | r->u.target.ref = (unsigned long)ref; |
762 | r->u.target.status = atomic_read(status); | 607 | r->u.target.status = atomic_read(status); |
763 | r->u.target.wwpn = wwpn; | 608 | r->u.target.wwpn = wwpn; |
@@ -774,7 +619,8 @@ static void zfcp_rec_dbf_event_target(u8 id2, void *ref, | |||
774 | * @ref: additional reference (e.g. request) | 619 | * @ref: additional reference (e.g. request) |
775 | * @adapter: adapter | 620 | * @adapter: adapter |
776 | */ | 621 | */ |
777 | void zfcp_rec_dbf_event_adapter(u8 id, void *ref, struct zfcp_adapter *adapter) | 622 | void zfcp_rec_dbf_event_adapter(char *id, void *ref, |
623 | struct zfcp_adapter *adapter) | ||
778 | { | 624 | { |
779 | zfcp_rec_dbf_event_target(id, ref, adapter, &adapter->status, | 625 | zfcp_rec_dbf_event_target(id, ref, adapter, &adapter->status, |
780 | &adapter->erp_counter, 0, 0, 0); | 626 | &adapter->erp_counter, 0, 0, 0); |
@@ -786,7 +632,7 @@ void zfcp_rec_dbf_event_adapter(u8 id, void *ref, struct zfcp_adapter *adapter) | |||
786 | * @ref: additional reference (e.g. request) | 632 | * @ref: additional reference (e.g. request) |
787 | * @port: port | 633 | * @port: port |
788 | */ | 634 | */ |
789 | void zfcp_rec_dbf_event_port(u8 id, void *ref, struct zfcp_port *port) | 635 | void zfcp_rec_dbf_event_port(char *id, void *ref, struct zfcp_port *port) |
790 | { | 636 | { |
791 | struct zfcp_adapter *adapter = port->adapter; | 637 | struct zfcp_adapter *adapter = port->adapter; |
792 | 638 | ||
@@ -801,7 +647,7 @@ void zfcp_rec_dbf_event_port(u8 id, void *ref, struct zfcp_port *port) | |||
801 | * @ref: additional reference (e.g. request) | 647 | * @ref: additional reference (e.g. request) |
802 | * @unit: unit | 648 | * @unit: unit |
803 | */ | 649 | */ |
804 | void zfcp_rec_dbf_event_unit(u8 id, void *ref, struct zfcp_unit *unit) | 650 | void zfcp_rec_dbf_event_unit(char *id, void *ref, struct zfcp_unit *unit) |
805 | { | 651 | { |
806 | struct zfcp_port *port = unit->port; | 652 | struct zfcp_port *port = unit->port; |
807 | struct zfcp_adapter *adapter = port->adapter; | 653 | struct zfcp_adapter *adapter = port->adapter; |
@@ -822,7 +668,7 @@ void zfcp_rec_dbf_event_unit(u8 id, void *ref, struct zfcp_unit *unit) | |||
822 | * @port: port | 668 | * @port: port |
823 | * @unit: unit | 669 | * @unit: unit |
824 | */ | 670 | */ |
825 | void zfcp_rec_dbf_event_trigger(u8 id2, void *ref, u8 want, u8 need, | 671 | void zfcp_rec_dbf_event_trigger(char *id2, void *ref, u8 want, u8 need, |
826 | void *action, struct zfcp_adapter *adapter, | 672 | void *action, struct zfcp_adapter *adapter, |
827 | struct zfcp_port *port, struct zfcp_unit *unit) | 673 | struct zfcp_port *port, struct zfcp_unit *unit) |
828 | { | 674 | { |
@@ -832,7 +678,7 @@ void zfcp_rec_dbf_event_trigger(u8 id2, void *ref, u8 want, u8 need, | |||
832 | spin_lock_irqsave(&adapter->rec_dbf_lock, flags); | 678 | spin_lock_irqsave(&adapter->rec_dbf_lock, flags); |
833 | memset(r, 0, sizeof(*r)); | 679 | memset(r, 0, sizeof(*r)); |
834 | r->id = ZFCP_REC_DBF_ID_TRIGGER; | 680 | r->id = ZFCP_REC_DBF_ID_TRIGGER; |
835 | r->id2 = id2; | 681 | memcpy(r->id2, id2, ZFCP_DBF_ID_SIZE); |
836 | r->u.trigger.ref = (unsigned long)ref; | 682 | r->u.trigger.ref = (unsigned long)ref; |
837 | r->u.trigger.want = want; | 683 | r->u.trigger.want = want; |
838 | r->u.trigger.need = need; | 684 | r->u.trigger.need = need; |
@@ -855,7 +701,7 @@ void zfcp_rec_dbf_event_trigger(u8 id2, void *ref, u8 want, u8 need, | |||
855 | * @id2: identifier | 701 | * @id2: identifier |
856 | * @erp_action: error recovery action struct pointer | 702 | * @erp_action: error recovery action struct pointer |
857 | */ | 703 | */ |
858 | void zfcp_rec_dbf_event_action(u8 id2, struct zfcp_erp_action *erp_action) | 704 | void zfcp_rec_dbf_event_action(char *id2, struct zfcp_erp_action *erp_action) |
859 | { | 705 | { |
860 | struct zfcp_adapter *adapter = erp_action->adapter; | 706 | struct zfcp_adapter *adapter = erp_action->adapter; |
861 | struct zfcp_rec_dbf_record *r = &adapter->rec_dbf_buf; | 707 | struct zfcp_rec_dbf_record *r = &adapter->rec_dbf_buf; |
@@ -864,7 +710,7 @@ void zfcp_rec_dbf_event_action(u8 id2, struct zfcp_erp_action *erp_action) | |||
864 | spin_lock_irqsave(&adapter->rec_dbf_lock, flags); | 710 | spin_lock_irqsave(&adapter->rec_dbf_lock, flags); |
865 | memset(r, 0, sizeof(*r)); | 711 | memset(r, 0, sizeof(*r)); |
866 | r->id = ZFCP_REC_DBF_ID_ACTION; | 712 | r->id = ZFCP_REC_DBF_ID_ACTION; |
867 | r->id2 = id2; | 713 | memcpy(r->id2, id2, ZFCP_DBF_ID_SIZE); |
868 | r->u.action.action = (unsigned long)erp_action; | 714 | r->u.action.action = (unsigned long)erp_action; |
869 | r->u.action.status = erp_action->status; | 715 | r->u.action.status = erp_action->status; |
870 | r->u.action.step = erp_action->step; | 716 | r->u.action.step = erp_action->step; |
diff --git a/drivers/s390/scsi/zfcp_dbf.h b/drivers/s390/scsi/zfcp_dbf.h index 74998ff88e57..a573f7344dd6 100644 --- a/drivers/s390/scsi/zfcp_dbf.h +++ b/drivers/s390/scsi/zfcp_dbf.h | |||
@@ -25,6 +25,7 @@ | |||
25 | #include "zfcp_fsf.h" | 25 | #include "zfcp_fsf.h" |
26 | 26 | ||
27 | #define ZFCP_DBF_TAG_SIZE 4 | 27 | #define ZFCP_DBF_TAG_SIZE 4 |
28 | #define ZFCP_DBF_ID_SIZE 7 | ||
28 | 29 | ||
29 | struct zfcp_dbf_dump { | 30 | struct zfcp_dbf_dump { |
30 | u8 tag[ZFCP_DBF_TAG_SIZE]; | 31 | u8 tag[ZFCP_DBF_TAG_SIZE]; |
@@ -70,7 +71,7 @@ struct zfcp_rec_dbf_record_action { | |||
70 | 71 | ||
71 | struct zfcp_rec_dbf_record { | 72 | struct zfcp_rec_dbf_record { |
72 | u8 id; | 73 | u8 id; |
73 | u8 id2; | 74 | char id2[7]; |
74 | union { | 75 | union { |
75 | struct zfcp_rec_dbf_record_action action; | 76 | struct zfcp_rec_dbf_record_action action; |
76 | struct zfcp_rec_dbf_record_thread thread; | 77 | struct zfcp_rec_dbf_record_thread thread; |
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c index 28c7185f24bc..65addf6a91ec 100644 --- a/drivers/s390/scsi/zfcp_erp.c +++ b/drivers/s390/scsi/zfcp_erp.c | |||
@@ -55,7 +55,7 @@ enum zfcp_erp_act_result { | |||
55 | 55 | ||
56 | static void zfcp_erp_adapter_block(struct zfcp_adapter *adapter, int mask) | 56 | static void zfcp_erp_adapter_block(struct zfcp_adapter *adapter, int mask) |
57 | { | 57 | { |
58 | zfcp_erp_modify_adapter_status(adapter, 15, NULL, | 58 | zfcp_erp_modify_adapter_status(adapter, "erablk1", NULL, |
59 | ZFCP_STATUS_COMMON_UNBLOCKED | mask, | 59 | ZFCP_STATUS_COMMON_UNBLOCKED | mask, |
60 | ZFCP_CLEAR); | 60 | ZFCP_CLEAR); |
61 | } | 61 | } |
@@ -75,9 +75,9 @@ static void zfcp_erp_action_ready(struct zfcp_erp_action *act) | |||
75 | struct zfcp_adapter *adapter = act->adapter; | 75 | struct zfcp_adapter *adapter = act->adapter; |
76 | 76 | ||
77 | list_move(&act->list, &act->adapter->erp_ready_head); | 77 | list_move(&act->list, &act->adapter->erp_ready_head); |
78 | zfcp_rec_dbf_event_action(146, act); | 78 | zfcp_rec_dbf_event_action("erardy1", act); |
79 | up(&adapter->erp_ready_sem); | 79 | up(&adapter->erp_ready_sem); |
80 | zfcp_rec_dbf_event_thread(2, adapter); | 80 | zfcp_rec_dbf_event_thread("erardy2", adapter); |
81 | } | 81 | } |
82 | 82 | ||
83 | static void zfcp_erp_action_dismiss(struct zfcp_erp_action *act) | 83 | static void zfcp_erp_action_dismiss(struct zfcp_erp_action *act) |
@@ -208,7 +208,7 @@ static struct zfcp_erp_action *zfcp_erp_setup_act(int need, | |||
208 | 208 | ||
209 | static int zfcp_erp_action_enqueue(int want, struct zfcp_adapter *adapter, | 209 | static int zfcp_erp_action_enqueue(int want, struct zfcp_adapter *adapter, |
210 | struct zfcp_port *port, | 210 | struct zfcp_port *port, |
211 | struct zfcp_unit *unit, u8 id, void *ref) | 211 | struct zfcp_unit *unit, char *id, void *ref) |
212 | { | 212 | { |
213 | int retval = 1, need; | 213 | int retval = 1, need; |
214 | struct zfcp_erp_action *act = NULL; | 214 | struct zfcp_erp_action *act = NULL; |
@@ -228,7 +228,7 @@ static int zfcp_erp_action_enqueue(int want, struct zfcp_adapter *adapter, | |||
228 | ++adapter->erp_total_count; | 228 | ++adapter->erp_total_count; |
229 | list_add_tail(&act->list, &adapter->erp_ready_head); | 229 | list_add_tail(&act->list, &adapter->erp_ready_head); |
230 | up(&adapter->erp_ready_sem); | 230 | up(&adapter->erp_ready_sem); |
231 | zfcp_rec_dbf_event_thread(1, adapter); | 231 | zfcp_rec_dbf_event_thread("eracte1", adapter); |
232 | retval = 0; | 232 | retval = 0; |
233 | out: | 233 | out: |
234 | zfcp_rec_dbf_event_trigger(id, ref, want, need, act, | 234 | zfcp_rec_dbf_event_trigger(id, ref, want, need, act, |
@@ -237,13 +237,13 @@ static int zfcp_erp_action_enqueue(int want, struct zfcp_adapter *adapter, | |||
237 | } | 237 | } |
238 | 238 | ||
239 | static int _zfcp_erp_adapter_reopen(struct zfcp_adapter *adapter, | 239 | static int _zfcp_erp_adapter_reopen(struct zfcp_adapter *adapter, |
240 | int clear_mask, u8 id, void *ref) | 240 | int clear_mask, char *id, void *ref) |
241 | { | 241 | { |
242 | zfcp_erp_adapter_block(adapter, clear_mask); | 242 | zfcp_erp_adapter_block(adapter, clear_mask); |
243 | 243 | ||
244 | /* ensure propagation of failed status to new devices */ | 244 | /* ensure propagation of failed status to new devices */ |
245 | if (atomic_read(&adapter->status) & ZFCP_STATUS_COMMON_ERP_FAILED) { | 245 | if (atomic_read(&adapter->status) & ZFCP_STATUS_COMMON_ERP_FAILED) { |
246 | zfcp_erp_adapter_failed(adapter, 13, NULL); | 246 | zfcp_erp_adapter_failed(adapter, "erareo1", NULL); |
247 | return -EIO; | 247 | return -EIO; |
248 | } | 248 | } |
249 | return zfcp_erp_action_enqueue(ZFCP_ERP_ACTION_REOPEN_ADAPTER, | 249 | return zfcp_erp_action_enqueue(ZFCP_ERP_ACTION_REOPEN_ADAPTER, |
@@ -258,7 +258,7 @@ static int _zfcp_erp_adapter_reopen(struct zfcp_adapter *adapter, | |||
258 | * @ref: Reference for debug trace event. | 258 | * @ref: Reference for debug trace event. |
259 | */ | 259 | */ |
260 | void zfcp_erp_adapter_reopen(struct zfcp_adapter *adapter, int clear, | 260 | void zfcp_erp_adapter_reopen(struct zfcp_adapter *adapter, int clear, |
261 | u8 id, void *ref) | 261 | char *id, void *ref) |
262 | { | 262 | { |
263 | unsigned long flags; | 263 | unsigned long flags; |
264 | 264 | ||
@@ -277,7 +277,7 @@ void zfcp_erp_adapter_reopen(struct zfcp_adapter *adapter, int clear, | |||
277 | * @ref: Reference for debug trace event. | 277 | * @ref: Reference for debug trace event. |
278 | */ | 278 | */ |
279 | void zfcp_erp_adapter_shutdown(struct zfcp_adapter *adapter, int clear, | 279 | void zfcp_erp_adapter_shutdown(struct zfcp_adapter *adapter, int clear, |
280 | u8 id, void *ref) | 280 | char *id, void *ref) |
281 | { | 281 | { |
282 | int flags = ZFCP_STATUS_COMMON_RUNNING | ZFCP_STATUS_COMMON_ERP_FAILED; | 282 | int flags = ZFCP_STATUS_COMMON_RUNNING | ZFCP_STATUS_COMMON_ERP_FAILED; |
283 | zfcp_erp_adapter_reopen(adapter, clear | flags, id, ref); | 283 | zfcp_erp_adapter_reopen(adapter, clear | flags, id, ref); |
@@ -290,7 +290,8 @@ void zfcp_erp_adapter_shutdown(struct zfcp_adapter *adapter, int clear, | |||
290 | * @id: Id for debug trace event. | 290 | * @id: Id for debug trace event. |
291 | * @ref: Reference for debug trace event. | 291 | * @ref: Reference for debug trace event. |
292 | */ | 292 | */ |
293 | void zfcp_erp_port_shutdown(struct zfcp_port *port, int clear, u8 id, void *ref) | 293 | void zfcp_erp_port_shutdown(struct zfcp_port *port, int clear, char *id, |
294 | void *ref) | ||
294 | { | 295 | { |
295 | int flags = ZFCP_STATUS_COMMON_RUNNING | ZFCP_STATUS_COMMON_ERP_FAILED; | 296 | int flags = ZFCP_STATUS_COMMON_RUNNING | ZFCP_STATUS_COMMON_ERP_FAILED; |
296 | zfcp_erp_port_reopen(port, clear | flags, id, ref); | 297 | zfcp_erp_port_reopen(port, clear | flags, id, ref); |
@@ -303,7 +304,8 @@ void zfcp_erp_port_shutdown(struct zfcp_port *port, int clear, u8 id, void *ref) | |||
303 | * @id: Id for debug trace event. | 304 | * @id: Id for debug trace event. |
304 | * @ref: Reference for debug trace event. | 305 | * @ref: Reference for debug trace event. |
305 | */ | 306 | */ |
306 | void zfcp_erp_unit_shutdown(struct zfcp_unit *unit, int clear, u8 id, void *ref) | 307 | void zfcp_erp_unit_shutdown(struct zfcp_unit *unit, int clear, char *id, |
308 | void *ref) | ||
307 | { | 309 | { |
308 | int flags = ZFCP_STATUS_COMMON_RUNNING | ZFCP_STATUS_COMMON_ERP_FAILED; | 310 | int flags = ZFCP_STATUS_COMMON_RUNNING | ZFCP_STATUS_COMMON_ERP_FAILED; |
309 | zfcp_erp_unit_reopen(unit, clear | flags, id, ref); | 311 | zfcp_erp_unit_reopen(unit, clear | flags, id, ref); |
@@ -311,13 +313,13 @@ void zfcp_erp_unit_shutdown(struct zfcp_unit *unit, int clear, u8 id, void *ref) | |||
311 | 313 | ||
312 | static void zfcp_erp_port_block(struct zfcp_port *port, int clear) | 314 | static void zfcp_erp_port_block(struct zfcp_port *port, int clear) |
313 | { | 315 | { |
314 | zfcp_erp_modify_port_status(port, 17, NULL, | 316 | zfcp_erp_modify_port_status(port, "erpblk1", NULL, |
315 | ZFCP_STATUS_COMMON_UNBLOCKED | clear, | 317 | ZFCP_STATUS_COMMON_UNBLOCKED | clear, |
316 | ZFCP_CLEAR); | 318 | ZFCP_CLEAR); |
317 | } | 319 | } |
318 | 320 | ||
319 | static void _zfcp_erp_port_forced_reopen(struct zfcp_port *port, | 321 | static void _zfcp_erp_port_forced_reopen(struct zfcp_port *port, |
320 | int clear, u8 id, void *ref) | 322 | int clear, char *id, void *ref) |
321 | { | 323 | { |
322 | zfcp_erp_port_block(port, clear); | 324 | zfcp_erp_port_block(port, clear); |
323 | 325 | ||
@@ -334,7 +336,7 @@ static void _zfcp_erp_port_forced_reopen(struct zfcp_port *port, | |||
334 | * @id: Id for debug trace event. | 336 | * @id: Id for debug trace event. |
335 | * @ref: Reference for debug trace event. | 337 | * @ref: Reference for debug trace event. |
336 | */ | 338 | */ |
337 | void zfcp_erp_port_forced_reopen(struct zfcp_port *port, int clear, u8 id, | 339 | void zfcp_erp_port_forced_reopen(struct zfcp_port *port, int clear, char *id, |
338 | void *ref) | 340 | void *ref) |
339 | { | 341 | { |
340 | unsigned long flags; | 342 | unsigned long flags; |
@@ -347,14 +349,14 @@ void zfcp_erp_port_forced_reopen(struct zfcp_port *port, int clear, u8 id, | |||
347 | read_unlock_irqrestore(&zfcp_data.config_lock, flags); | 349 | read_unlock_irqrestore(&zfcp_data.config_lock, flags); |
348 | } | 350 | } |
349 | 351 | ||
350 | static int _zfcp_erp_port_reopen(struct zfcp_port *port, int clear, u8 id, | 352 | static int _zfcp_erp_port_reopen(struct zfcp_port *port, int clear, char *id, |
351 | void *ref) | 353 | void *ref) |
352 | { | 354 | { |
353 | zfcp_erp_port_block(port, clear); | 355 | zfcp_erp_port_block(port, clear); |
354 | 356 | ||
355 | if (atomic_read(&port->status) & ZFCP_STATUS_COMMON_ERP_FAILED) { | 357 | if (atomic_read(&port->status) & ZFCP_STATUS_COMMON_ERP_FAILED) { |
356 | /* ensure propagation of failed status to new devices */ | 358 | /* ensure propagation of failed status to new devices */ |
357 | zfcp_erp_port_failed(port, 14, NULL); | 359 | zfcp_erp_port_failed(port, "erpreo1", NULL); |
358 | return -EIO; | 360 | return -EIO; |
359 | } | 361 | } |
360 | 362 | ||
@@ -369,7 +371,7 @@ static int _zfcp_erp_port_reopen(struct zfcp_port *port, int clear, u8 id, | |||
369 | * | 371 | * |
370 | * Returns 0 if recovery has been triggered, < 0 if not. | 372 | * Returns 0 if recovery has been triggered, < 0 if not. |
371 | */ | 373 | */ |
372 | int zfcp_erp_port_reopen(struct zfcp_port *port, int clear, u8 id, void *ref) | 374 | int zfcp_erp_port_reopen(struct zfcp_port *port, int clear, char *id, void *ref) |
373 | { | 375 | { |
374 | unsigned long flags; | 376 | unsigned long flags; |
375 | int retval; | 377 | int retval; |
@@ -386,12 +388,12 @@ int zfcp_erp_port_reopen(struct zfcp_port *port, int clear, u8 id, void *ref) | |||
386 | 388 | ||
387 | static void zfcp_erp_unit_block(struct zfcp_unit *unit, int clear_mask) | 389 | static void zfcp_erp_unit_block(struct zfcp_unit *unit, int clear_mask) |
388 | { | 390 | { |
389 | zfcp_erp_modify_unit_status(unit, 19, NULL, | 391 | zfcp_erp_modify_unit_status(unit, "erublk1", NULL, |
390 | ZFCP_STATUS_COMMON_UNBLOCKED | clear_mask, | 392 | ZFCP_STATUS_COMMON_UNBLOCKED | clear_mask, |
391 | ZFCP_CLEAR); | 393 | ZFCP_CLEAR); |
392 | } | 394 | } |
393 | 395 | ||
394 | static void _zfcp_erp_unit_reopen(struct zfcp_unit *unit, int clear, u8 id, | 396 | static void _zfcp_erp_unit_reopen(struct zfcp_unit *unit, int clear, char *id, |
395 | void *ref) | 397 | void *ref) |
396 | { | 398 | { |
397 | struct zfcp_adapter *adapter = unit->port->adapter; | 399 | struct zfcp_adapter *adapter = unit->port->adapter; |
@@ -411,7 +413,8 @@ static void _zfcp_erp_unit_reopen(struct zfcp_unit *unit, int clear, u8 id, | |||
411 | * @clear_mask: specifies flags in unit status to be cleared | 413 | * @clear_mask: specifies flags in unit status to be cleared |
412 | * Return: 0 on success, < 0 on error | 414 | * Return: 0 on success, < 0 on error |
413 | */ | 415 | */ |
414 | void zfcp_erp_unit_reopen(struct zfcp_unit *unit, int clear, u8 id, void *ref) | 416 | void zfcp_erp_unit_reopen(struct zfcp_unit *unit, int clear, char *id, |
417 | void *ref) | ||
415 | { | 418 | { |
416 | unsigned long flags; | 419 | unsigned long flags; |
417 | struct zfcp_port *port = unit->port; | 420 | struct zfcp_port *port = unit->port; |
@@ -437,28 +440,28 @@ static int status_change_clear(unsigned long mask, atomic_t *status) | |||
437 | static void zfcp_erp_adapter_unblock(struct zfcp_adapter *adapter) | 440 | static void zfcp_erp_adapter_unblock(struct zfcp_adapter *adapter) |
438 | { | 441 | { |
439 | if (status_change_set(ZFCP_STATUS_COMMON_UNBLOCKED, &adapter->status)) | 442 | if (status_change_set(ZFCP_STATUS_COMMON_UNBLOCKED, &adapter->status)) |
440 | zfcp_rec_dbf_event_adapter(16, NULL, adapter); | 443 | zfcp_rec_dbf_event_adapter("eraubl1", NULL, adapter); |
441 | atomic_set_mask(ZFCP_STATUS_COMMON_UNBLOCKED, &adapter->status); | 444 | atomic_set_mask(ZFCP_STATUS_COMMON_UNBLOCKED, &adapter->status); |
442 | } | 445 | } |
443 | 446 | ||
444 | static void zfcp_erp_port_unblock(struct zfcp_port *port) | 447 | static void zfcp_erp_port_unblock(struct zfcp_port *port) |
445 | { | 448 | { |
446 | if (status_change_set(ZFCP_STATUS_COMMON_UNBLOCKED, &port->status)) | 449 | if (status_change_set(ZFCP_STATUS_COMMON_UNBLOCKED, &port->status)) |
447 | zfcp_rec_dbf_event_port(18, NULL, port); | 450 | zfcp_rec_dbf_event_port("erpubl1", NULL, port); |
448 | atomic_set_mask(ZFCP_STATUS_COMMON_UNBLOCKED, &port->status); | 451 | atomic_set_mask(ZFCP_STATUS_COMMON_UNBLOCKED, &port->status); |
449 | } | 452 | } |
450 | 453 | ||
451 | static void zfcp_erp_unit_unblock(struct zfcp_unit *unit) | 454 | static void zfcp_erp_unit_unblock(struct zfcp_unit *unit) |
452 | { | 455 | { |
453 | if (status_change_set(ZFCP_STATUS_COMMON_UNBLOCKED, &unit->status)) | 456 | if (status_change_set(ZFCP_STATUS_COMMON_UNBLOCKED, &unit->status)) |
454 | zfcp_rec_dbf_event_unit(20, NULL, unit); | 457 | zfcp_rec_dbf_event_unit("eruubl1", NULL, unit); |
455 | atomic_set_mask(ZFCP_STATUS_COMMON_UNBLOCKED, &unit->status); | 458 | atomic_set_mask(ZFCP_STATUS_COMMON_UNBLOCKED, &unit->status); |
456 | } | 459 | } |
457 | 460 | ||
458 | static void zfcp_erp_action_to_running(struct zfcp_erp_action *erp_action) | 461 | static void zfcp_erp_action_to_running(struct zfcp_erp_action *erp_action) |
459 | { | 462 | { |
460 | list_move(&erp_action->list, &erp_action->adapter->erp_running_head); | 463 | list_move(&erp_action->list, &erp_action->adapter->erp_running_head); |
461 | zfcp_rec_dbf_event_action(145, erp_action); | 464 | zfcp_rec_dbf_event_action("erator1", erp_action); |
462 | } | 465 | } |
463 | 466 | ||
464 | static void zfcp_erp_strategy_check_fsfreq(struct zfcp_erp_action *act) | 467 | static void zfcp_erp_strategy_check_fsfreq(struct zfcp_erp_action *act) |
@@ -474,11 +477,11 @@ static void zfcp_erp_strategy_check_fsfreq(struct zfcp_erp_action *act) | |||
474 | if (act->status & (ZFCP_STATUS_ERP_DISMISSED | | 477 | if (act->status & (ZFCP_STATUS_ERP_DISMISSED | |
475 | ZFCP_STATUS_ERP_TIMEDOUT)) { | 478 | ZFCP_STATUS_ERP_TIMEDOUT)) { |
476 | act->fsf_req->status |= ZFCP_STATUS_FSFREQ_DISMISSED; | 479 | act->fsf_req->status |= ZFCP_STATUS_FSFREQ_DISMISSED; |
477 | zfcp_rec_dbf_event_action(142, act); | 480 | zfcp_rec_dbf_event_action("erscf_1", act); |
478 | act->fsf_req->erp_action = NULL; | 481 | act->fsf_req->erp_action = NULL; |
479 | } | 482 | } |
480 | if (act->status & ZFCP_STATUS_ERP_TIMEDOUT) | 483 | if (act->status & ZFCP_STATUS_ERP_TIMEDOUT) |
481 | zfcp_rec_dbf_event_action(143, act); | 484 | zfcp_rec_dbf_event_action("erscf_2", act); |
482 | if (act->fsf_req->status & (ZFCP_STATUS_FSFREQ_COMPLETED | | 485 | if (act->fsf_req->status & (ZFCP_STATUS_FSFREQ_COMPLETED | |
483 | ZFCP_STATUS_FSFREQ_DISMISSED)) | 486 | ZFCP_STATUS_FSFREQ_DISMISSED)) |
484 | act->fsf_req = NULL; | 487 | act->fsf_req = NULL; |
@@ -530,7 +533,7 @@ static void zfcp_erp_strategy_memwait(struct zfcp_erp_action *erp_action) | |||
530 | } | 533 | } |
531 | 534 | ||
532 | static void _zfcp_erp_port_reopen_all(struct zfcp_adapter *adapter, | 535 | static void _zfcp_erp_port_reopen_all(struct zfcp_adapter *adapter, |
533 | int clear, u8 id, void *ref) | 536 | int clear, char *id, void *ref) |
534 | { | 537 | { |
535 | struct zfcp_port *port; | 538 | struct zfcp_port *port; |
536 | 539 | ||
@@ -538,8 +541,8 @@ static void _zfcp_erp_port_reopen_all(struct zfcp_adapter *adapter, | |||
538 | _zfcp_erp_port_reopen(port, clear, id, ref); | 541 | _zfcp_erp_port_reopen(port, clear, id, ref); |
539 | } | 542 | } |
540 | 543 | ||
541 | static void _zfcp_erp_unit_reopen_all(struct zfcp_port *port, int clear, u8 id, | 544 | static void _zfcp_erp_unit_reopen_all(struct zfcp_port *port, int clear, |
542 | void *ref) | 545 | char *id, void *ref) |
543 | { | 546 | { |
544 | struct zfcp_unit *unit; | 547 | struct zfcp_unit *unit; |
545 | 548 | ||
@@ -559,28 +562,28 @@ static void zfcp_erp_strategy_followup_actions(struct zfcp_erp_action *act) | |||
559 | 562 | ||
560 | case ZFCP_ERP_ACTION_REOPEN_ADAPTER: | 563 | case ZFCP_ERP_ACTION_REOPEN_ADAPTER: |
561 | if (status == ZFCP_ERP_SUCCEEDED) | 564 | if (status == ZFCP_ERP_SUCCEEDED) |
562 | _zfcp_erp_port_reopen_all(adapter, 0, 70, NULL); | 565 | _zfcp_erp_port_reopen_all(adapter, 0, "ersfa_1", NULL); |
563 | else | 566 | else |
564 | _zfcp_erp_adapter_reopen(adapter, 0, 71, NULL); | 567 | _zfcp_erp_adapter_reopen(adapter, 0, "ersfa_2", NULL); |
565 | break; | 568 | break; |
566 | 569 | ||
567 | case ZFCP_ERP_ACTION_REOPEN_PORT_FORCED: | 570 | case ZFCP_ERP_ACTION_REOPEN_PORT_FORCED: |
568 | if (status == ZFCP_ERP_SUCCEEDED) | 571 | if (status == ZFCP_ERP_SUCCEEDED) |
569 | _zfcp_erp_port_reopen(port, 0, 72, NULL); | 572 | _zfcp_erp_port_reopen(port, 0, "ersfa_3", NULL); |
570 | else | 573 | else |
571 | _zfcp_erp_adapter_reopen(adapter, 0, 73, NULL); | 574 | _zfcp_erp_adapter_reopen(adapter, 0, "ersfa_4", NULL); |
572 | break; | 575 | break; |
573 | 576 | ||
574 | case ZFCP_ERP_ACTION_REOPEN_PORT: | 577 | case ZFCP_ERP_ACTION_REOPEN_PORT: |
575 | if (status == ZFCP_ERP_SUCCEEDED) | 578 | if (status == ZFCP_ERP_SUCCEEDED) |
576 | _zfcp_erp_unit_reopen_all(port, 0, 74, NULL); | 579 | _zfcp_erp_unit_reopen_all(port, 0, "ersfa_5", NULL); |
577 | else | 580 | else |
578 | _zfcp_erp_port_forced_reopen(port, 0, 75, NULL); | 581 | _zfcp_erp_port_forced_reopen(port, 0, "ersfa_6", NULL); |
579 | break; | 582 | break; |
580 | 583 | ||
581 | case ZFCP_ERP_ACTION_REOPEN_UNIT: | 584 | case ZFCP_ERP_ACTION_REOPEN_UNIT: |
582 | if (status != ZFCP_ERP_SUCCEEDED) | 585 | if (status != ZFCP_ERP_SUCCEEDED) |
583 | _zfcp_erp_port_reopen(unit->port, 0, 76, NULL); | 586 | _zfcp_erp_port_reopen(unit->port, 0, "ersfa_7", NULL); |
584 | break; | 587 | break; |
585 | } | 588 | } |
586 | } | 589 | } |
@@ -617,7 +620,7 @@ static void zfcp_erp_enqueue_ptp_port(struct zfcp_adapter *adapter) | |||
617 | adapter->peer_d_id); | 620 | adapter->peer_d_id); |
618 | if (IS_ERR(port)) /* error or port already attached */ | 621 | if (IS_ERR(port)) /* error or port already attached */ |
619 | return; | 622 | return; |
620 | _zfcp_erp_port_reopen(port, 0, 150, NULL); | 623 | _zfcp_erp_port_reopen(port, 0, "ereptp1", NULL); |
621 | } | 624 | } |
622 | 625 | ||
623 | static int zfcp_erp_adapter_strat_fsf_xconf(struct zfcp_erp_action *erp_action) | 626 | static int zfcp_erp_adapter_strat_fsf_xconf(struct zfcp_erp_action *erp_action) |
@@ -640,9 +643,9 @@ static int zfcp_erp_adapter_strat_fsf_xconf(struct zfcp_erp_action *erp_action) | |||
640 | return ZFCP_ERP_FAILED; | 643 | return ZFCP_ERP_FAILED; |
641 | } | 644 | } |
642 | 645 | ||
643 | zfcp_rec_dbf_event_thread_lock(6, adapter); | 646 | zfcp_rec_dbf_event_thread_lock("erasfx1", adapter); |
644 | down(&adapter->erp_ready_sem); | 647 | down(&adapter->erp_ready_sem); |
645 | zfcp_rec_dbf_event_thread_lock(7, adapter); | 648 | zfcp_rec_dbf_event_thread_lock("erasfx2", adapter); |
646 | if (erp_action->status & ZFCP_STATUS_ERP_TIMEDOUT) | 649 | if (erp_action->status & ZFCP_STATUS_ERP_TIMEDOUT) |
647 | break; | 650 | break; |
648 | 651 | ||
@@ -681,9 +684,9 @@ static int zfcp_erp_adapter_strategy_open_fsf_xport(struct zfcp_erp_action *act) | |||
681 | if (ret) | 684 | if (ret) |
682 | return ZFCP_ERP_FAILED; | 685 | return ZFCP_ERP_FAILED; |
683 | 686 | ||
684 | zfcp_rec_dbf_event_thread_lock(8, adapter); | 687 | zfcp_rec_dbf_event_thread_lock("erasox1", adapter); |
685 | down(&adapter->erp_ready_sem); | 688 | down(&adapter->erp_ready_sem); |
686 | zfcp_rec_dbf_event_thread_lock(9, adapter); | 689 | zfcp_rec_dbf_event_thread_lock("erasox2", adapter); |
687 | if (act->status & ZFCP_STATUS_ERP_TIMEDOUT) | 690 | if (act->status & ZFCP_STATUS_ERP_TIMEDOUT) |
688 | return ZFCP_ERP_FAILED; | 691 | return ZFCP_ERP_FAILED; |
689 | 692 | ||
@@ -714,7 +717,7 @@ static void zfcp_erp_adapter_strategy_close(struct zfcp_erp_action *act) | |||
714 | zfcp_fsf_req_dismiss_all(adapter); | 717 | zfcp_fsf_req_dismiss_all(adapter); |
715 | adapter->fsf_req_seq_no = 0; | 718 | adapter->fsf_req_seq_no = 0; |
716 | /* all ports and units are closed */ | 719 | /* all ports and units are closed */ |
717 | zfcp_erp_modify_adapter_status(adapter, 24, NULL, | 720 | zfcp_erp_modify_adapter_status(adapter, "erascl1", NULL, |
718 | ZFCP_STATUS_COMMON_OPEN, ZFCP_CLEAR); | 721 | ZFCP_STATUS_COMMON_OPEN, ZFCP_CLEAR); |
719 | 722 | ||
720 | atomic_clear_mask(ZFCP_STATUS_ADAPTER_XCONFIG_OK | | 723 | atomic_clear_mask(ZFCP_STATUS_ADAPTER_XCONFIG_OK | |
@@ -832,7 +835,7 @@ static int zfcp_erp_open_ptp_port(struct zfcp_erp_action *act) | |||
832 | struct zfcp_port *port = act->port; | 835 | struct zfcp_port *port = act->port; |
833 | 836 | ||
834 | if (port->wwpn != adapter->peer_wwpn) { | 837 | if (port->wwpn != adapter->peer_wwpn) { |
835 | zfcp_erp_port_failed(port, 25, NULL); | 838 | zfcp_erp_port_failed(port, "eroptp1", NULL); |
836 | return ZFCP_ERP_FAILED; | 839 | return ZFCP_ERP_FAILED; |
837 | } | 840 | } |
838 | port->d_id = adapter->peer_d_id; | 841 | port->d_id = adapter->peer_d_id; |
@@ -986,7 +989,7 @@ static int zfcp_erp_strategy_check_unit(struct zfcp_unit *unit, int result) | |||
986 | "port 0x%016Lx\n", | 989 | "port 0x%016Lx\n", |
987 | (unsigned long long)unit->fcp_lun, | 990 | (unsigned long long)unit->fcp_lun, |
988 | (unsigned long long)unit->port->wwpn); | 991 | (unsigned long long)unit->port->wwpn); |
989 | zfcp_erp_unit_failed(unit, 21, NULL); | 992 | zfcp_erp_unit_failed(unit, "erusck1", NULL); |
990 | } | 993 | } |
991 | break; | 994 | break; |
992 | } | 995 | } |
@@ -1016,7 +1019,7 @@ static int zfcp_erp_strategy_check_port(struct zfcp_port *port, int result) | |||
1016 | dev_err(&port->adapter->ccw_device->dev, | 1019 | dev_err(&port->adapter->ccw_device->dev, |
1017 | "ERP failed for remote port 0x%016Lx\n", | 1020 | "ERP failed for remote port 0x%016Lx\n", |
1018 | (unsigned long long)port->wwpn); | 1021 | (unsigned long long)port->wwpn); |
1019 | zfcp_erp_port_failed(port, 22, NULL); | 1022 | zfcp_erp_port_failed(port, "erpsck1", NULL); |
1020 | } | 1023 | } |
1021 | break; | 1024 | break; |
1022 | } | 1025 | } |
@@ -1043,7 +1046,7 @@ static int zfcp_erp_strategy_check_adapter(struct zfcp_adapter *adapter, | |||
1043 | dev_err(&adapter->ccw_device->dev, | 1046 | dev_err(&adapter->ccw_device->dev, |
1044 | "ERP cannot recover an error " | 1047 | "ERP cannot recover an error " |
1045 | "on the FCP device\n"); | 1048 | "on the FCP device\n"); |
1046 | zfcp_erp_adapter_failed(adapter, 23, NULL); | 1049 | zfcp_erp_adapter_failed(adapter, "erasck1", NULL); |
1047 | } | 1050 | } |
1048 | break; | 1051 | break; |
1049 | } | 1052 | } |
@@ -1108,7 +1111,7 @@ static int zfcp_erp_strategy_statechange(struct zfcp_erp_action *act, int ret) | |||
1108 | if (zfcp_erp_strat_change_det(&adapter->status, erp_status)) { | 1111 | if (zfcp_erp_strat_change_det(&adapter->status, erp_status)) { |
1109 | _zfcp_erp_adapter_reopen(adapter, | 1112 | _zfcp_erp_adapter_reopen(adapter, |
1110 | ZFCP_STATUS_COMMON_ERP_FAILED, | 1113 | ZFCP_STATUS_COMMON_ERP_FAILED, |
1111 | 67, NULL); | 1114 | "ersscg1", NULL); |
1112 | return ZFCP_ERP_EXIT; | 1115 | return ZFCP_ERP_EXIT; |
1113 | } | 1116 | } |
1114 | break; | 1117 | break; |
@@ -1118,7 +1121,7 @@ static int zfcp_erp_strategy_statechange(struct zfcp_erp_action *act, int ret) | |||
1118 | if (zfcp_erp_strat_change_det(&port->status, erp_status)) { | 1121 | if (zfcp_erp_strat_change_det(&port->status, erp_status)) { |
1119 | _zfcp_erp_port_reopen(port, | 1122 | _zfcp_erp_port_reopen(port, |
1120 | ZFCP_STATUS_COMMON_ERP_FAILED, | 1123 | ZFCP_STATUS_COMMON_ERP_FAILED, |
1121 | 68, NULL); | 1124 | "ersscg2", NULL); |
1122 | return ZFCP_ERP_EXIT; | 1125 | return ZFCP_ERP_EXIT; |
1123 | } | 1126 | } |
1124 | break; | 1127 | break; |
@@ -1127,7 +1130,7 @@ static int zfcp_erp_strategy_statechange(struct zfcp_erp_action *act, int ret) | |||
1127 | if (zfcp_erp_strat_change_det(&unit->status, erp_status)) { | 1130 | if (zfcp_erp_strat_change_det(&unit->status, erp_status)) { |
1128 | _zfcp_erp_unit_reopen(unit, | 1131 | _zfcp_erp_unit_reopen(unit, |
1129 | ZFCP_STATUS_COMMON_ERP_FAILED, | 1132 | ZFCP_STATUS_COMMON_ERP_FAILED, |
1130 | 69, NULL); | 1133 | "ersscg3", NULL); |
1131 | return ZFCP_ERP_EXIT; | 1134 | return ZFCP_ERP_EXIT; |
1132 | } | 1135 | } |
1133 | break; | 1136 | break; |
@@ -1146,7 +1149,7 @@ static void zfcp_erp_action_dequeue(struct zfcp_erp_action *erp_action) | |||
1146 | } | 1149 | } |
1147 | 1150 | ||
1148 | list_del(&erp_action->list); | 1151 | list_del(&erp_action->list); |
1149 | zfcp_rec_dbf_event_action(144, erp_action); | 1152 | zfcp_rec_dbf_event_action("eractd1", erp_action); |
1150 | 1153 | ||
1151 | switch (erp_action->action) { | 1154 | switch (erp_action->action) { |
1152 | case ZFCP_ERP_ACTION_REOPEN_UNIT: | 1155 | case ZFCP_ERP_ACTION_REOPEN_UNIT: |
@@ -1331,7 +1334,7 @@ static int zfcp_erp_strategy(struct zfcp_erp_action *erp_action) | |||
1331 | erp_action->status |= ZFCP_STATUS_ERP_LOWMEM; | 1334 | erp_action->status |= ZFCP_STATUS_ERP_LOWMEM; |
1332 | } | 1335 | } |
1333 | if (adapter->erp_total_count == adapter->erp_low_mem_count) | 1336 | if (adapter->erp_total_count == adapter->erp_low_mem_count) |
1334 | _zfcp_erp_adapter_reopen(adapter, 0, 66, NULL); | 1337 | _zfcp_erp_adapter_reopen(adapter, 0, "erstgy1", NULL); |
1335 | else { | 1338 | else { |
1336 | zfcp_erp_strategy_memwait(erp_action); | 1339 | zfcp_erp_strategy_memwait(erp_action); |
1337 | retval = ZFCP_ERP_CONTINUES; | 1340 | retval = ZFCP_ERP_CONTINUES; |
@@ -1391,9 +1394,9 @@ static int zfcp_erp_thread(void *data) | |||
1391 | zfcp_erp_wakeup(adapter); | 1394 | zfcp_erp_wakeup(adapter); |
1392 | } | 1395 | } |
1393 | 1396 | ||
1394 | zfcp_rec_dbf_event_thread_lock(4, adapter); | 1397 | zfcp_rec_dbf_event_thread_lock("erthrd1", adapter); |
1395 | ignore = down_interruptible(&adapter->erp_ready_sem); | 1398 | ignore = down_interruptible(&adapter->erp_ready_sem); |
1396 | zfcp_rec_dbf_event_thread_lock(5, adapter); | 1399 | zfcp_rec_dbf_event_thread_lock("erthrd2", adapter); |
1397 | } | 1400 | } |
1398 | 1401 | ||
1399 | atomic_clear_mask(ZFCP_STATUS_ADAPTER_ERP_THREAD_UP, &adapter->status); | 1402 | atomic_clear_mask(ZFCP_STATUS_ADAPTER_ERP_THREAD_UP, &adapter->status); |
@@ -1438,7 +1441,7 @@ void zfcp_erp_thread_kill(struct zfcp_adapter *adapter) | |||
1438 | { | 1441 | { |
1439 | atomic_set_mask(ZFCP_STATUS_ADAPTER_ERP_THREAD_KILL, &adapter->status); | 1442 | atomic_set_mask(ZFCP_STATUS_ADAPTER_ERP_THREAD_KILL, &adapter->status); |
1440 | up(&adapter->erp_ready_sem); | 1443 | up(&adapter->erp_ready_sem); |
1441 | zfcp_rec_dbf_event_thread_lock(3, adapter); | 1444 | zfcp_rec_dbf_event_thread_lock("erthrk1", adapter); |
1442 | 1445 | ||
1443 | wait_event(adapter->erp_thread_wqh, | 1446 | wait_event(adapter->erp_thread_wqh, |
1444 | !(atomic_read(&adapter->status) & | 1447 | !(atomic_read(&adapter->status) & |
@@ -1454,7 +1457,7 @@ void zfcp_erp_thread_kill(struct zfcp_adapter *adapter) | |||
1454 | * @id: Event id for debug trace. | 1457 | * @id: Event id for debug trace. |
1455 | * @ref: Reference for debug trace. | 1458 | * @ref: Reference for debug trace. |
1456 | */ | 1459 | */ |
1457 | void zfcp_erp_adapter_failed(struct zfcp_adapter *adapter, u8 id, void *ref) | 1460 | void zfcp_erp_adapter_failed(struct zfcp_adapter *adapter, char *id, void *ref) |
1458 | { | 1461 | { |
1459 | zfcp_erp_modify_adapter_status(adapter, id, ref, | 1462 | zfcp_erp_modify_adapter_status(adapter, id, ref, |
1460 | ZFCP_STATUS_COMMON_ERP_FAILED, ZFCP_SET); | 1463 | ZFCP_STATUS_COMMON_ERP_FAILED, ZFCP_SET); |
@@ -1466,7 +1469,7 @@ void zfcp_erp_adapter_failed(struct zfcp_adapter *adapter, u8 id, void *ref) | |||
1466 | * @id: Event id for debug trace. | 1469 | * @id: Event id for debug trace. |
1467 | * @ref: Reference for debug trace. | 1470 | * @ref: Reference for debug trace. |
1468 | */ | 1471 | */ |
1469 | void zfcp_erp_port_failed(struct zfcp_port *port, u8 id, void *ref) | 1472 | void zfcp_erp_port_failed(struct zfcp_port *port, char *id, void *ref) |
1470 | { | 1473 | { |
1471 | zfcp_erp_modify_port_status(port, id, ref, | 1474 | zfcp_erp_modify_port_status(port, id, ref, |
1472 | ZFCP_STATUS_COMMON_ERP_FAILED, ZFCP_SET); | 1475 | ZFCP_STATUS_COMMON_ERP_FAILED, ZFCP_SET); |
@@ -1478,7 +1481,7 @@ void zfcp_erp_port_failed(struct zfcp_port *port, u8 id, void *ref) | |||
1478 | * @id: Event id for debug trace. | 1481 | * @id: Event id for debug trace. |
1479 | * @ref: Reference for debug trace. | 1482 | * @ref: Reference for debug trace. |
1480 | */ | 1483 | */ |
1481 | void zfcp_erp_unit_failed(struct zfcp_unit *unit, u8 id, void *ref) | 1484 | void zfcp_erp_unit_failed(struct zfcp_unit *unit, char *id, void *ref) |
1482 | { | 1485 | { |
1483 | zfcp_erp_modify_unit_status(unit, id, ref, | 1486 | zfcp_erp_modify_unit_status(unit, id, ref, |
1484 | ZFCP_STATUS_COMMON_ERP_FAILED, ZFCP_SET); | 1487 | ZFCP_STATUS_COMMON_ERP_FAILED, ZFCP_SET); |
@@ -1505,7 +1508,7 @@ void zfcp_erp_wait(struct zfcp_adapter *adapter) | |||
1505 | * | 1508 | * |
1506 | * Changes in common status bits are propagated to attached ports and units. | 1509 | * Changes in common status bits are propagated to attached ports and units. |
1507 | */ | 1510 | */ |
1508 | void zfcp_erp_modify_adapter_status(struct zfcp_adapter *adapter, u8 id, | 1511 | void zfcp_erp_modify_adapter_status(struct zfcp_adapter *adapter, char *id, |
1509 | void *ref, u32 mask, int set_or_clear) | 1512 | void *ref, u32 mask, int set_or_clear) |
1510 | { | 1513 | { |
1511 | struct zfcp_port *port; | 1514 | struct zfcp_port *port; |
@@ -1539,7 +1542,7 @@ void zfcp_erp_modify_adapter_status(struct zfcp_adapter *adapter, u8 id, | |||
1539 | * | 1542 | * |
1540 | * Changes in common status bits are propagated to attached units. | 1543 | * Changes in common status bits are propagated to attached units. |
1541 | */ | 1544 | */ |
1542 | void zfcp_erp_modify_port_status(struct zfcp_port *port, u8 id, void *ref, | 1545 | void zfcp_erp_modify_port_status(struct zfcp_port *port, char *id, void *ref, |
1543 | u32 mask, int set_or_clear) | 1546 | u32 mask, int set_or_clear) |
1544 | { | 1547 | { |
1545 | struct zfcp_unit *unit; | 1548 | struct zfcp_unit *unit; |
@@ -1571,7 +1574,7 @@ void zfcp_erp_modify_port_status(struct zfcp_port *port, u8 id, void *ref, | |||
1571 | * @mask: status bits to change | 1574 | * @mask: status bits to change |
1572 | * @set_or_clear: ZFCP_SET or ZFCP_CLEAR | 1575 | * @set_or_clear: ZFCP_SET or ZFCP_CLEAR |
1573 | */ | 1576 | */ |
1574 | void zfcp_erp_modify_unit_status(struct zfcp_unit *unit, u8 id, void *ref, | 1577 | void zfcp_erp_modify_unit_status(struct zfcp_unit *unit, char *id, void *ref, |
1575 | u32 mask, int set_or_clear) | 1578 | u32 mask, int set_or_clear) |
1576 | { | 1579 | { |
1577 | if (set_or_clear == ZFCP_SET) { | 1580 | if (set_or_clear == ZFCP_SET) { |
@@ -1594,7 +1597,7 @@ void zfcp_erp_modify_unit_status(struct zfcp_unit *unit, u8 id, void *ref, | |||
1594 | * @id: The debug trace id. | 1597 | * @id: The debug trace id. |
1595 | * @id: Reference for the debug trace. | 1598 | * @id: Reference for the debug trace. |
1596 | */ | 1599 | */ |
1597 | void zfcp_erp_port_boxed(struct zfcp_port *port, u8 id, void *ref) | 1600 | void zfcp_erp_port_boxed(struct zfcp_port *port, char *id, void *ref) |
1598 | { | 1601 | { |
1599 | unsigned long flags; | 1602 | unsigned long flags; |
1600 | 1603 | ||
@@ -1611,7 +1614,7 @@ void zfcp_erp_port_boxed(struct zfcp_port *port, u8 id, void *ref) | |||
1611 | * @id: The debug trace id. | 1614 | * @id: The debug trace id. |
1612 | * @id: Reference for the debug trace. | 1615 | * @id: Reference for the debug trace. |
1613 | */ | 1616 | */ |
1614 | void zfcp_erp_unit_boxed(struct zfcp_unit *unit, u8 id, void *ref) | 1617 | void zfcp_erp_unit_boxed(struct zfcp_unit *unit, char *id, void *ref) |
1615 | { | 1618 | { |
1616 | zfcp_erp_modify_unit_status(unit, id, ref, | 1619 | zfcp_erp_modify_unit_status(unit, id, ref, |
1617 | ZFCP_STATUS_COMMON_ACCESS_BOXED, ZFCP_SET); | 1620 | ZFCP_STATUS_COMMON_ACCESS_BOXED, ZFCP_SET); |
@@ -1627,7 +1630,7 @@ void zfcp_erp_unit_boxed(struct zfcp_unit *unit, u8 id, void *ref) | |||
1627 | * Since the adapter has denied access, stop using the port and the | 1630 | * Since the adapter has denied access, stop using the port and the |
1628 | * attached units. | 1631 | * attached units. |
1629 | */ | 1632 | */ |
1630 | void zfcp_erp_port_access_denied(struct zfcp_port *port, u8 id, void *ref) | 1633 | void zfcp_erp_port_access_denied(struct zfcp_port *port, char *id, void *ref) |
1631 | { | 1634 | { |
1632 | unsigned long flags; | 1635 | unsigned long flags; |
1633 | 1636 | ||
@@ -1646,14 +1649,14 @@ void zfcp_erp_port_access_denied(struct zfcp_port *port, u8 id, void *ref) | |||
1646 | * | 1649 | * |
1647 | * Since the adapter has denied access, stop using the unit. | 1650 | * Since the adapter has denied access, stop using the unit. |
1648 | */ | 1651 | */ |
1649 | void zfcp_erp_unit_access_denied(struct zfcp_unit *unit, u8 id, void *ref) | 1652 | void zfcp_erp_unit_access_denied(struct zfcp_unit *unit, char *id, void *ref) |
1650 | { | 1653 | { |
1651 | zfcp_erp_modify_unit_status(unit, id, ref, | 1654 | zfcp_erp_modify_unit_status(unit, id, ref, |
1652 | ZFCP_STATUS_COMMON_ERP_FAILED | | 1655 | ZFCP_STATUS_COMMON_ERP_FAILED | |
1653 | ZFCP_STATUS_COMMON_ACCESS_DENIED, ZFCP_SET); | 1656 | ZFCP_STATUS_COMMON_ACCESS_DENIED, ZFCP_SET); |
1654 | } | 1657 | } |
1655 | 1658 | ||
1656 | static void zfcp_erp_unit_access_changed(struct zfcp_unit *unit, u8 id, | 1659 | static void zfcp_erp_unit_access_changed(struct zfcp_unit *unit, char *id, |
1657 | void *ref) | 1660 | void *ref) |
1658 | { | 1661 | { |
1659 | int status = atomic_read(&unit->status); | 1662 | int status = atomic_read(&unit->status); |
@@ -1664,7 +1667,7 @@ static void zfcp_erp_unit_access_changed(struct zfcp_unit *unit, u8 id, | |||
1664 | zfcp_erp_unit_reopen(unit, ZFCP_STATUS_COMMON_ERP_FAILED, id, ref); | 1667 | zfcp_erp_unit_reopen(unit, ZFCP_STATUS_COMMON_ERP_FAILED, id, ref); |
1665 | } | 1668 | } |
1666 | 1669 | ||
1667 | static void zfcp_erp_port_access_changed(struct zfcp_port *port, u8 id, | 1670 | static void zfcp_erp_port_access_changed(struct zfcp_port *port, char *id, |
1668 | void *ref) | 1671 | void *ref) |
1669 | { | 1672 | { |
1670 | struct zfcp_unit *unit; | 1673 | struct zfcp_unit *unit; |
@@ -1686,7 +1689,7 @@ static void zfcp_erp_port_access_changed(struct zfcp_port *port, u8 id, | |||
1686 | * @id: Id for debug trace | 1689 | * @id: Id for debug trace |
1687 | * @ref: Reference for debug trace | 1690 | * @ref: Reference for debug trace |
1688 | */ | 1691 | */ |
1689 | void zfcp_erp_adapter_access_changed(struct zfcp_adapter *adapter, u8 id, | 1692 | void zfcp_erp_adapter_access_changed(struct zfcp_adapter *adapter, char *id, |
1690 | void *ref) | 1693 | void *ref) |
1691 | { | 1694 | { |
1692 | struct zfcp_port *port; | 1695 | struct zfcp_port *port; |
diff --git a/drivers/s390/scsi/zfcp_ext.h b/drivers/s390/scsi/zfcp_ext.h index a2b4987ac652..569d2437e99b 100644 --- a/drivers/s390/scsi/zfcp_ext.h +++ b/drivers/s390/scsi/zfcp_ext.h | |||
@@ -35,15 +35,15 @@ extern struct miscdevice zfcp_cfdc_misc; | |||
35 | /* zfcp_dbf.c */ | 35 | /* zfcp_dbf.c */ |
36 | extern int zfcp_adapter_debug_register(struct zfcp_adapter *); | 36 | extern int zfcp_adapter_debug_register(struct zfcp_adapter *); |
37 | extern void zfcp_adapter_debug_unregister(struct zfcp_adapter *); | 37 | extern void zfcp_adapter_debug_unregister(struct zfcp_adapter *); |
38 | extern void zfcp_rec_dbf_event_thread(u8, struct zfcp_adapter *); | 38 | extern void zfcp_rec_dbf_event_thread(char *, struct zfcp_adapter *); |
39 | extern void zfcp_rec_dbf_event_thread_lock(u8, struct zfcp_adapter *); | 39 | extern void zfcp_rec_dbf_event_thread_lock(char *, struct zfcp_adapter *); |
40 | extern void zfcp_rec_dbf_event_adapter(u8, void *, struct zfcp_adapter *); | 40 | extern void zfcp_rec_dbf_event_adapter(char *, void *, struct zfcp_adapter *); |
41 | extern void zfcp_rec_dbf_event_port(u8, void *, struct zfcp_port *); | 41 | extern void zfcp_rec_dbf_event_port(char *, void *, struct zfcp_port *); |
42 | extern void zfcp_rec_dbf_event_unit(u8, void *, struct zfcp_unit *); | 42 | extern void zfcp_rec_dbf_event_unit(char *, void *, struct zfcp_unit *); |
43 | extern void zfcp_rec_dbf_event_trigger(u8, void *, u8, u8, void *, | 43 | extern void zfcp_rec_dbf_event_trigger(char *, void *, u8, u8, void *, |
44 | struct zfcp_adapter *, | 44 | struct zfcp_adapter *, |
45 | struct zfcp_port *, struct zfcp_unit *); | 45 | struct zfcp_port *, struct zfcp_unit *); |
46 | extern void zfcp_rec_dbf_event_action(u8, struct zfcp_erp_action *); | 46 | extern void zfcp_rec_dbf_event_action(char *, struct zfcp_erp_action *); |
47 | extern void zfcp_hba_dbf_event_fsf_response(struct zfcp_fsf_req *); | 47 | extern void zfcp_hba_dbf_event_fsf_response(struct zfcp_fsf_req *); |
48 | extern void zfcp_hba_dbf_event_fsf_unsol(const char *, struct zfcp_adapter *, | 48 | extern void zfcp_hba_dbf_event_fsf_unsol(const char *, struct zfcp_adapter *, |
49 | struct fsf_status_read_buffer *); | 49 | struct fsf_status_read_buffer *); |
@@ -66,31 +66,34 @@ extern void zfcp_scsi_dbf_event_devreset(const char *, u8, struct zfcp_unit *, | |||
66 | struct scsi_cmnd *); | 66 | struct scsi_cmnd *); |
67 | 67 | ||
68 | /* zfcp_erp.c */ | 68 | /* zfcp_erp.c */ |
69 | extern void zfcp_erp_modify_adapter_status(struct zfcp_adapter *, u8, void *, | 69 | extern void zfcp_erp_modify_adapter_status(struct zfcp_adapter *, char *, |
70 | u32, int); | 70 | void *, u32, int); |
71 | extern void zfcp_erp_adapter_reopen(struct zfcp_adapter *, int, u8, void *); | 71 | extern void zfcp_erp_adapter_reopen(struct zfcp_adapter *, int, char *, void *); |
72 | extern void zfcp_erp_adapter_shutdown(struct zfcp_adapter *, int, u8, void *); | 72 | extern void zfcp_erp_adapter_shutdown(struct zfcp_adapter *, int, char *, |
73 | extern void zfcp_erp_adapter_failed(struct zfcp_adapter *, u8, void *); | 73 | void *); |
74 | extern void zfcp_erp_modify_port_status(struct zfcp_port *, u8, void *, u32, | 74 | extern void zfcp_erp_adapter_failed(struct zfcp_adapter *, char *, void *); |
75 | extern void zfcp_erp_modify_port_status(struct zfcp_port *, char *, void *, u32, | ||
75 | int); | 76 | int); |
76 | extern int zfcp_erp_port_reopen(struct zfcp_port *, int, u8, void *); | 77 | extern int zfcp_erp_port_reopen(struct zfcp_port *, int, char *, void *); |
77 | extern void zfcp_erp_port_shutdown(struct zfcp_port *, int, u8, void *); | 78 | extern void zfcp_erp_port_shutdown(struct zfcp_port *, int, char *, void *); |
78 | extern void zfcp_erp_port_forced_reopen(struct zfcp_port *, int, u8, void *); | 79 | extern void zfcp_erp_port_forced_reopen(struct zfcp_port *, int, char *, |
79 | extern void zfcp_erp_port_failed(struct zfcp_port *, u8, void *); | 80 | void *); |
80 | extern void zfcp_erp_modify_unit_status(struct zfcp_unit *, u8, void *, u32, | 81 | extern void zfcp_erp_port_failed(struct zfcp_port *, char *, void *); |
82 | extern void zfcp_erp_modify_unit_status(struct zfcp_unit *, char *, void *, u32, | ||
81 | int); | 83 | int); |
82 | extern void zfcp_erp_unit_reopen(struct zfcp_unit *, int, u8, void *); | 84 | extern void zfcp_erp_unit_reopen(struct zfcp_unit *, int, char *, void *); |
83 | extern void zfcp_erp_unit_shutdown(struct zfcp_unit *, int, u8, void *); | 85 | extern void zfcp_erp_unit_shutdown(struct zfcp_unit *, int, char *, void *); |
84 | extern void zfcp_erp_unit_failed(struct zfcp_unit *, u8, void *); | 86 | extern void zfcp_erp_unit_failed(struct zfcp_unit *, char *, void *); |
85 | extern int zfcp_erp_thread_setup(struct zfcp_adapter *); | 87 | extern int zfcp_erp_thread_setup(struct zfcp_adapter *); |
86 | extern void zfcp_erp_thread_kill(struct zfcp_adapter *); | 88 | extern void zfcp_erp_thread_kill(struct zfcp_adapter *); |
87 | extern void zfcp_erp_wait(struct zfcp_adapter *); | 89 | extern void zfcp_erp_wait(struct zfcp_adapter *); |
88 | extern void zfcp_erp_notify(struct zfcp_erp_action *, unsigned long); | 90 | extern void zfcp_erp_notify(struct zfcp_erp_action *, unsigned long); |
89 | extern void zfcp_erp_port_boxed(struct zfcp_port *, u8, void *); | 91 | extern void zfcp_erp_port_boxed(struct zfcp_port *, char *, void *); |
90 | extern void zfcp_erp_unit_boxed(struct zfcp_unit *, u8, void *); | 92 | extern void zfcp_erp_unit_boxed(struct zfcp_unit *, char *, void *); |
91 | extern void zfcp_erp_port_access_denied(struct zfcp_port *, u8, void *); | 93 | extern void zfcp_erp_port_access_denied(struct zfcp_port *, char *, void *); |
92 | extern void zfcp_erp_unit_access_denied(struct zfcp_unit *, u8, void *); | 94 | extern void zfcp_erp_unit_access_denied(struct zfcp_unit *, char *, void *); |
93 | extern void zfcp_erp_adapter_access_changed(struct zfcp_adapter *, u8, void *); | 95 | extern void zfcp_erp_adapter_access_changed(struct zfcp_adapter *, char *, |
96 | void *); | ||
94 | extern void zfcp_erp_timeout_handler(unsigned long); | 97 | extern void zfcp_erp_timeout_handler(unsigned long); |
95 | extern void zfcp_erp_port_strategy_open_lookup(struct work_struct *); | 98 | extern void zfcp_erp_port_strategy_open_lookup(struct work_struct *); |
96 | 99 | ||
diff --git a/drivers/s390/scsi/zfcp_fc.c b/drivers/s390/scsi/zfcp_fc.c index 0f435ed9d1a0..ec700b3c2100 100644 --- a/drivers/s390/scsi/zfcp_fc.c +++ b/drivers/s390/scsi/zfcp_fc.c | |||
@@ -150,7 +150,7 @@ static void _zfcp_fc_incoming_rscn(struct zfcp_fsf_req *fsf_req, u32 range, | |||
150 | /* Try to connect to unused ports anyway. */ | 150 | /* Try to connect to unused ports anyway. */ |
151 | zfcp_erp_port_reopen(port, | 151 | zfcp_erp_port_reopen(port, |
152 | ZFCP_STATUS_COMMON_ERP_FAILED, | 152 | ZFCP_STATUS_COMMON_ERP_FAILED, |
153 | 82, fsf_req); | 153 | "fcirsc1", fsf_req); |
154 | else if ((port->d_id & range) == (elem->nport_did & range)) | 154 | else if ((port->d_id & range) == (elem->nport_did & range)) |
155 | /* Check connection status for connected ports */ | 155 | /* Check connection status for connected ports */ |
156 | zfcp_test_link(port); | 156 | zfcp_test_link(port); |
@@ -196,7 +196,7 @@ static void zfcp_fc_incoming_wwpn(struct zfcp_fsf_req *req, u64 wwpn) | |||
196 | read_unlock_irqrestore(&zfcp_data.config_lock, flags); | 196 | read_unlock_irqrestore(&zfcp_data.config_lock, flags); |
197 | 197 | ||
198 | if (port && (port->wwpn == wwpn)) | 198 | if (port && (port->wwpn == wwpn)) |
199 | zfcp_erp_port_forced_reopen(port, 0, 83, req); | 199 | zfcp_erp_port_forced_reopen(port, 0, "fciwwp1", req); |
200 | } | 200 | } |
201 | 201 | ||
202 | static void zfcp_fc_incoming_plogi(struct zfcp_fsf_req *req) | 202 | static void zfcp_fc_incoming_plogi(struct zfcp_fsf_req *req) |
@@ -374,7 +374,7 @@ static void zfcp_fc_adisc_handler(unsigned long data) | |||
374 | 374 | ||
375 | if (adisc->els.status) { | 375 | if (adisc->els.status) { |
376 | /* request rejected or timed out */ | 376 | /* request rejected or timed out */ |
377 | zfcp_erp_port_forced_reopen(port, 0, 63, NULL); | 377 | zfcp_erp_port_forced_reopen(port, 0, "fcadh_1", NULL); |
378 | goto out; | 378 | goto out; |
379 | } | 379 | } |
380 | 380 | ||
@@ -382,7 +382,7 @@ static void zfcp_fc_adisc_handler(unsigned long data) | |||
382 | port->wwnn = ls_adisc->wwnn; | 382 | port->wwnn = ls_adisc->wwnn; |
383 | 383 | ||
384 | if (port->wwpn != ls_adisc->wwpn) | 384 | if (port->wwpn != ls_adisc->wwpn) |
385 | zfcp_erp_port_reopen(port, 0, 64, NULL); | 385 | zfcp_erp_port_reopen(port, 0, "fcadh_2", NULL); |
386 | 386 | ||
387 | out: | 387 | out: |
388 | zfcp_port_put(port); | 388 | zfcp_port_put(port); |
@@ -434,7 +434,7 @@ void zfcp_fc_link_test_work(struct work_struct *work) | |||
434 | /* send of ADISC was not possible */ | 434 | /* send of ADISC was not possible */ |
435 | zfcp_port_put(port); | 435 | zfcp_port_put(port); |
436 | if (retval != -EBUSY) | 436 | if (retval != -EBUSY) |
437 | zfcp_erp_port_forced_reopen(port, 0, 65, NULL); | 437 | zfcp_erp_port_forced_reopen(port, 0, "fcltwk1", NULL); |
438 | } | 438 | } |
439 | 439 | ||
440 | /** | 440 | /** |
@@ -536,7 +536,7 @@ static void zfcp_validate_port(struct zfcp_port *port) | |||
536 | zfcp_port_put(port); | 536 | zfcp_port_put(port); |
537 | return; | 537 | return; |
538 | } | 538 | } |
539 | zfcp_erp_port_shutdown(port, 0, 151, NULL); | 539 | zfcp_erp_port_shutdown(port, 0, "fcpval1", NULL); |
540 | zfcp_erp_wait(adapter); | 540 | zfcp_erp_wait(adapter); |
541 | zfcp_port_put(port); | 541 | zfcp_port_put(port); |
542 | zfcp_port_dequeue(port); | 542 | zfcp_port_dequeue(port); |
@@ -599,7 +599,7 @@ static int zfcp_scan_eval_gpn_ft(struct zfcp_gpn_ft *gpn_ft, int max_entries) | |||
599 | if (IS_ERR(port)) | 599 | if (IS_ERR(port)) |
600 | ret = PTR_ERR(port); | 600 | ret = PTR_ERR(port); |
601 | else | 601 | else |
602 | zfcp_erp_port_reopen(port, 0, 149, NULL); | 602 | zfcp_erp_port_reopen(port, 0, "fcegpf1", NULL); |
603 | } | 603 | } |
604 | 604 | ||
605 | zfcp_erp_wait(adapter); | 605 | zfcp_erp_wait(adapter); |
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c index 698e42214a37..b4c9ba085093 100644 --- a/drivers/s390/scsi/zfcp_fsf.c +++ b/drivers/s390/scsi/zfcp_fsf.c | |||
@@ -18,8 +18,8 @@ | |||
18 | static void zfcp_fsf_request_timeout_handler(unsigned long data) | 18 | static void zfcp_fsf_request_timeout_handler(unsigned long data) |
19 | { | 19 | { |
20 | struct zfcp_adapter *adapter = (struct zfcp_adapter *) data; | 20 | struct zfcp_adapter *adapter = (struct zfcp_adapter *) data; |
21 | zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED, 62, | 21 | zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED, |
22 | NULL); | 22 | "fsrth_1", NULL); |
23 | } | 23 | } |
24 | 24 | ||
25 | static void zfcp_fsf_start_timer(struct zfcp_fsf_req *fsf_req, | 25 | static void zfcp_fsf_start_timer(struct zfcp_fsf_req *fsf_req, |
@@ -78,7 +78,7 @@ static void zfcp_fsf_access_denied_port(struct zfcp_fsf_req *req, | |||
78 | (unsigned long long)port->wwpn); | 78 | (unsigned long long)port->wwpn); |
79 | zfcp_act_eval_err(req->adapter, header->fsf_status_qual.halfword[0]); | 79 | zfcp_act_eval_err(req->adapter, header->fsf_status_qual.halfword[0]); |
80 | zfcp_act_eval_err(req->adapter, header->fsf_status_qual.halfword[1]); | 80 | zfcp_act_eval_err(req->adapter, header->fsf_status_qual.halfword[1]); |
81 | zfcp_erp_port_access_denied(port, 55, req); | 81 | zfcp_erp_port_access_denied(port, "fspad_1", req); |
82 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 82 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
83 | } | 83 | } |
84 | 84 | ||
@@ -92,7 +92,7 @@ static void zfcp_fsf_access_denied_unit(struct zfcp_fsf_req *req, | |||
92 | (unsigned long long)unit->port->wwpn); | 92 | (unsigned long long)unit->port->wwpn); |
93 | zfcp_act_eval_err(req->adapter, header->fsf_status_qual.halfword[0]); | 93 | zfcp_act_eval_err(req->adapter, header->fsf_status_qual.halfword[0]); |
94 | zfcp_act_eval_err(req->adapter, header->fsf_status_qual.halfword[1]); | 94 | zfcp_act_eval_err(req->adapter, header->fsf_status_qual.halfword[1]); |
95 | zfcp_erp_unit_access_denied(unit, 59, req); | 95 | zfcp_erp_unit_access_denied(unit, "fsuad_1", req); |
96 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 96 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
97 | } | 97 | } |
98 | 98 | ||
@@ -100,7 +100,7 @@ static void zfcp_fsf_class_not_supp(struct zfcp_fsf_req *req) | |||
100 | { | 100 | { |
101 | dev_err(&req->adapter->ccw_device->dev, "FCP device not " | 101 | dev_err(&req->adapter->ccw_device->dev, "FCP device not " |
102 | "operational because of an unsupported FC class\n"); | 102 | "operational because of an unsupported FC class\n"); |
103 | zfcp_erp_adapter_shutdown(req->adapter, 0, 123, req); | 103 | zfcp_erp_adapter_shutdown(req->adapter, 0, "fscns_1", req); |
104 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 104 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
105 | } | 105 | } |
106 | 106 | ||
@@ -162,13 +162,13 @@ static void zfcp_fsf_status_read_port_closed(struct zfcp_fsf_req *req) | |||
162 | list_for_each_entry(port, &adapter->port_list_head, list) | 162 | list_for_each_entry(port, &adapter->port_list_head, list) |
163 | if (port->d_id == d_id) { | 163 | if (port->d_id == d_id) { |
164 | read_unlock_irqrestore(&zfcp_data.config_lock, flags); | 164 | read_unlock_irqrestore(&zfcp_data.config_lock, flags); |
165 | zfcp_erp_port_reopen(port, 0, 101, req); | 165 | zfcp_erp_port_reopen(port, 0, "fssrpc1", req); |
166 | return; | 166 | return; |
167 | } | 167 | } |
168 | read_unlock_irqrestore(&zfcp_data.config_lock, flags); | 168 | read_unlock_irqrestore(&zfcp_data.config_lock, flags); |
169 | } | 169 | } |
170 | 170 | ||
171 | static void zfcp_fsf_link_down_info_eval(struct zfcp_fsf_req *req, u8 id, | 171 | static void zfcp_fsf_link_down_info_eval(struct zfcp_fsf_req *req, char *id, |
172 | struct fsf_link_down_info *link_down) | 172 | struct fsf_link_down_info *link_down) |
173 | { | 173 | { |
174 | struct zfcp_adapter *adapter = req->adapter; | 174 | struct zfcp_adapter *adapter = req->adapter; |
@@ -257,13 +257,13 @@ static void zfcp_fsf_status_read_link_down(struct zfcp_fsf_req *req) | |||
257 | 257 | ||
258 | switch (sr_buf->status_subtype) { | 258 | switch (sr_buf->status_subtype) { |
259 | case FSF_STATUS_READ_SUB_NO_PHYSICAL_LINK: | 259 | case FSF_STATUS_READ_SUB_NO_PHYSICAL_LINK: |
260 | zfcp_fsf_link_down_info_eval(req, 38, ldi); | 260 | zfcp_fsf_link_down_info_eval(req, "fssrld1", ldi); |
261 | break; | 261 | break; |
262 | case FSF_STATUS_READ_SUB_FDISC_FAILED: | 262 | case FSF_STATUS_READ_SUB_FDISC_FAILED: |
263 | zfcp_fsf_link_down_info_eval(req, 39, ldi); | 263 | zfcp_fsf_link_down_info_eval(req, "fssrld2", ldi); |
264 | break; | 264 | break; |
265 | case FSF_STATUS_READ_SUB_FIRMWARE_UPDATE: | 265 | case FSF_STATUS_READ_SUB_FIRMWARE_UPDATE: |
266 | zfcp_fsf_link_down_info_eval(req, 40, NULL); | 266 | zfcp_fsf_link_down_info_eval(req, "fssrld3", NULL); |
267 | }; | 267 | }; |
268 | } | 268 | } |
269 | 269 | ||
@@ -303,22 +303,23 @@ static void zfcp_fsf_status_read_handler(struct zfcp_fsf_req *req) | |||
303 | dev_info(&adapter->ccw_device->dev, | 303 | dev_info(&adapter->ccw_device->dev, |
304 | "The local link has been restored\n"); | 304 | "The local link has been restored\n"); |
305 | /* All ports should be marked as ready to run again */ | 305 | /* All ports should be marked as ready to run again */ |
306 | zfcp_erp_modify_adapter_status(adapter, 30, NULL, | 306 | zfcp_erp_modify_adapter_status(adapter, "fssrh_1", NULL, |
307 | ZFCP_STATUS_COMMON_RUNNING, | 307 | ZFCP_STATUS_COMMON_RUNNING, |
308 | ZFCP_SET); | 308 | ZFCP_SET); |
309 | zfcp_erp_adapter_reopen(adapter, | 309 | zfcp_erp_adapter_reopen(adapter, |
310 | ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED | | 310 | ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED | |
311 | ZFCP_STATUS_COMMON_ERP_FAILED, | 311 | ZFCP_STATUS_COMMON_ERP_FAILED, |
312 | 102, req); | 312 | "fssrh_2", req); |
313 | break; | 313 | break; |
314 | case FSF_STATUS_READ_NOTIFICATION_LOST: | 314 | case FSF_STATUS_READ_NOTIFICATION_LOST: |
315 | if (sr_buf->status_subtype & FSF_STATUS_READ_SUB_ACT_UPDATED) | 315 | if (sr_buf->status_subtype & FSF_STATUS_READ_SUB_ACT_UPDATED) |
316 | zfcp_erp_adapter_access_changed(adapter, 135, req); | 316 | zfcp_erp_adapter_access_changed(adapter, "fssrh_3", |
317 | req); | ||
317 | if (sr_buf->status_subtype & FSF_STATUS_READ_SUB_INCOMING_ELS) | 318 | if (sr_buf->status_subtype & FSF_STATUS_READ_SUB_INCOMING_ELS) |
318 | schedule_work(&adapter->scan_work); | 319 | schedule_work(&adapter->scan_work); |
319 | break; | 320 | break; |
320 | case FSF_STATUS_READ_CFDC_UPDATED: | 321 | case FSF_STATUS_READ_CFDC_UPDATED: |
321 | zfcp_erp_adapter_access_changed(adapter, 136, req); | 322 | zfcp_erp_adapter_access_changed(adapter, "fssrh_4", req); |
322 | break; | 323 | break; |
323 | case FSF_STATUS_READ_FEATURE_UPDATE_ALERT: | 324 | case FSF_STATUS_READ_FEATURE_UPDATE_ALERT: |
324 | adapter->adapter_features = sr_buf->payload.word[0]; | 325 | adapter->adapter_features = sr_buf->payload.word[0]; |
@@ -347,7 +348,7 @@ static void zfcp_fsf_fsfstatus_qual_eval(struct zfcp_fsf_req *req) | |||
347 | dev_err(&req->adapter->ccw_device->dev, | 348 | dev_err(&req->adapter->ccw_device->dev, |
348 | "The FCP adapter reported a problem " | 349 | "The FCP adapter reported a problem " |
349 | "that cannot be recovered\n"); | 350 | "that cannot be recovered\n"); |
350 | zfcp_erp_adapter_shutdown(req->adapter, 0, 121, req); | 351 | zfcp_erp_adapter_shutdown(req->adapter, 0, "fsfsqe1", req); |
351 | break; | 352 | break; |
352 | } | 353 | } |
353 | /* all non-return stats set FSFREQ_ERROR*/ | 354 | /* all non-return stats set FSFREQ_ERROR*/ |
@@ -364,7 +365,7 @@ static void zfcp_fsf_fsfstatus_eval(struct zfcp_fsf_req *req) | |||
364 | dev_err(&req->adapter->ccw_device->dev, | 365 | dev_err(&req->adapter->ccw_device->dev, |
365 | "The FCP adapter does not recognize the command 0x%x\n", | 366 | "The FCP adapter does not recognize the command 0x%x\n", |
366 | req->qtcb->header.fsf_command); | 367 | req->qtcb->header.fsf_command); |
367 | zfcp_erp_adapter_shutdown(req->adapter, 0, 120, req); | 368 | zfcp_erp_adapter_shutdown(req->adapter, 0, "fsfse_1", req); |
368 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 369 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
369 | break; | 370 | break; |
370 | case FSF_ADAPTER_STATUS_AVAILABLE: | 371 | case FSF_ADAPTER_STATUS_AVAILABLE: |
@@ -396,17 +397,17 @@ static void zfcp_fsf_protstatus_eval(struct zfcp_fsf_req *req) | |||
396 | "QTCB version 0x%x not supported by FCP adapter " | 397 | "QTCB version 0x%x not supported by FCP adapter " |
397 | "(0x%x to 0x%x)\n", FSF_QTCB_CURRENT_VERSION, | 398 | "(0x%x to 0x%x)\n", FSF_QTCB_CURRENT_VERSION, |
398 | psq->word[0], psq->word[1]); | 399 | psq->word[0], psq->word[1]); |
399 | zfcp_erp_adapter_shutdown(adapter, 0, 117, req); | 400 | zfcp_erp_adapter_shutdown(adapter, 0, "fspse_1", req); |
400 | break; | 401 | break; |
401 | case FSF_PROT_ERROR_STATE: | 402 | case FSF_PROT_ERROR_STATE: |
402 | case FSF_PROT_SEQ_NUMB_ERROR: | 403 | case FSF_PROT_SEQ_NUMB_ERROR: |
403 | zfcp_erp_adapter_reopen(adapter, 0, 98, req); | 404 | zfcp_erp_adapter_reopen(adapter, 0, "fspse_2", req); |
404 | req->status |= ZFCP_STATUS_FSFREQ_RETRY; | 405 | req->status |= ZFCP_STATUS_FSFREQ_RETRY; |
405 | break; | 406 | break; |
406 | case FSF_PROT_UNSUPP_QTCB_TYPE: | 407 | case FSF_PROT_UNSUPP_QTCB_TYPE: |
407 | dev_err(&adapter->ccw_device->dev, | 408 | dev_err(&adapter->ccw_device->dev, |
408 | "The QTCB type is not supported by the FCP adapter\n"); | 409 | "The QTCB type is not supported by the FCP adapter\n"); |
409 | zfcp_erp_adapter_shutdown(adapter, 0, 118, req); | 410 | zfcp_erp_adapter_shutdown(adapter, 0, "fspse_3", req); |
410 | break; | 411 | break; |
411 | case FSF_PROT_HOST_CONNECTION_INITIALIZING: | 412 | case FSF_PROT_HOST_CONNECTION_INITIALIZING: |
412 | atomic_set_mask(ZFCP_STATUS_ADAPTER_HOST_CON_INIT, | 413 | atomic_set_mask(ZFCP_STATUS_ADAPTER_HOST_CON_INIT, |
@@ -416,27 +417,29 @@ static void zfcp_fsf_protstatus_eval(struct zfcp_fsf_req *req) | |||
416 | dev_err(&adapter->ccw_device->dev, | 417 | dev_err(&adapter->ccw_device->dev, |
417 | "0x%Lx is an ambiguous request identifier\n", | 418 | "0x%Lx is an ambiguous request identifier\n", |
418 | (unsigned long long)qtcb->bottom.support.req_handle); | 419 | (unsigned long long)qtcb->bottom.support.req_handle); |
419 | zfcp_erp_adapter_shutdown(adapter, 0, 78, req); | 420 | zfcp_erp_adapter_shutdown(adapter, 0, "fspse_4", req); |
420 | break; | 421 | break; |
421 | case FSF_PROT_LINK_DOWN: | 422 | case FSF_PROT_LINK_DOWN: |
422 | zfcp_fsf_link_down_info_eval(req, 37, &psq->link_down_info); | 423 | zfcp_fsf_link_down_info_eval(req, "fspse_5", |
424 | &psq->link_down_info); | ||
423 | /* FIXME: reopening adapter now? better wait for link up */ | 425 | /* FIXME: reopening adapter now? better wait for link up */ |
424 | zfcp_erp_adapter_reopen(adapter, 0, 79, req); | 426 | zfcp_erp_adapter_reopen(adapter, 0, "fspse_6", req); |
425 | break; | 427 | break; |
426 | case FSF_PROT_REEST_QUEUE: | 428 | case FSF_PROT_REEST_QUEUE: |
427 | /* All ports should be marked as ready to run again */ | 429 | /* All ports should be marked as ready to run again */ |
428 | zfcp_erp_modify_adapter_status(adapter, 28, NULL, | 430 | zfcp_erp_modify_adapter_status(adapter, "fspse_7", NULL, |
429 | ZFCP_STATUS_COMMON_RUNNING, | 431 | ZFCP_STATUS_COMMON_RUNNING, |
430 | ZFCP_SET); | 432 | ZFCP_SET); |
431 | zfcp_erp_adapter_reopen(adapter, | 433 | zfcp_erp_adapter_reopen(adapter, |
432 | ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED | | 434 | ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED | |
433 | ZFCP_STATUS_COMMON_ERP_FAILED, 99, req); | 435 | ZFCP_STATUS_COMMON_ERP_FAILED, |
436 | "fspse_8", req); | ||
434 | break; | 437 | break; |
435 | default: | 438 | default: |
436 | dev_err(&adapter->ccw_device->dev, | 439 | dev_err(&adapter->ccw_device->dev, |
437 | "0x%x is not a valid transfer protocol status\n", | 440 | "0x%x is not a valid transfer protocol status\n", |
438 | qtcb->prefix.prot_status); | 441 | qtcb->prefix.prot_status); |
439 | zfcp_erp_adapter_shutdown(adapter, 0, 119, req); | 442 | zfcp_erp_adapter_shutdown(adapter, 0, "fspse_9", req); |
440 | } | 443 | } |
441 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 444 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
442 | } | 445 | } |
@@ -522,7 +525,7 @@ static int zfcp_fsf_exchange_config_evaluate(struct zfcp_fsf_req *req) | |||
522 | dev_err(&adapter->ccw_device->dev, | 525 | dev_err(&adapter->ccw_device->dev, |
523 | "Unknown or unsupported arbitrated loop " | 526 | "Unknown or unsupported arbitrated loop " |
524 | "fibre channel topology detected\n"); | 527 | "fibre channel topology detected\n"); |
525 | zfcp_erp_adapter_shutdown(adapter, 0, 127, req); | 528 | zfcp_erp_adapter_shutdown(adapter, 0, "fsece_1", req); |
526 | return -EIO; | 529 | return -EIO; |
527 | } | 530 | } |
528 | 531 | ||
@@ -556,7 +559,7 @@ static void zfcp_fsf_exchange_config_data_handler(struct zfcp_fsf_req *req) | |||
556 | "FCP adapter maximum QTCB size (%d bytes) " | 559 | "FCP adapter maximum QTCB size (%d bytes) " |
557 | "is too small\n", | 560 | "is too small\n", |
558 | bottom->max_qtcb_size); | 561 | bottom->max_qtcb_size); |
559 | zfcp_erp_adapter_shutdown(adapter, 0, 129, req); | 562 | zfcp_erp_adapter_shutdown(adapter, 0, "fsecdh1", req); |
560 | return; | 563 | return; |
561 | } | 564 | } |
562 | atomic_set_mask(ZFCP_STATUS_ADAPTER_XCONFIG_OK, | 565 | atomic_set_mask(ZFCP_STATUS_ADAPTER_XCONFIG_OK, |
@@ -573,11 +576,11 @@ static void zfcp_fsf_exchange_config_data_handler(struct zfcp_fsf_req *req) | |||
573 | atomic_set_mask(ZFCP_STATUS_ADAPTER_XCONFIG_OK, | 576 | atomic_set_mask(ZFCP_STATUS_ADAPTER_XCONFIG_OK, |
574 | &adapter->status); | 577 | &adapter->status); |
575 | 578 | ||
576 | zfcp_fsf_link_down_info_eval(req, 42, | 579 | zfcp_fsf_link_down_info_eval(req, "fsecdh2", |
577 | &qtcb->header.fsf_status_qual.link_down_info); | 580 | &qtcb->header.fsf_status_qual.link_down_info); |
578 | break; | 581 | break; |
579 | default: | 582 | default: |
580 | zfcp_erp_adapter_shutdown(adapter, 0, 130, req); | 583 | zfcp_erp_adapter_shutdown(adapter, 0, "fsecdh3", req); |
581 | return; | 584 | return; |
582 | } | 585 | } |
583 | 586 | ||
@@ -593,14 +596,14 @@ static void zfcp_fsf_exchange_config_data_handler(struct zfcp_fsf_req *req) | |||
593 | dev_err(&adapter->ccw_device->dev, | 596 | dev_err(&adapter->ccw_device->dev, |
594 | "The FCP adapter only supports newer " | 597 | "The FCP adapter only supports newer " |
595 | "control block versions\n"); | 598 | "control block versions\n"); |
596 | zfcp_erp_adapter_shutdown(adapter, 0, 125, req); | 599 | zfcp_erp_adapter_shutdown(adapter, 0, "fsecdh4", req); |
597 | return; | 600 | return; |
598 | } | 601 | } |
599 | if (FSF_QTCB_CURRENT_VERSION > bottom->high_qtcb_version) { | 602 | if (FSF_QTCB_CURRENT_VERSION > bottom->high_qtcb_version) { |
600 | dev_err(&adapter->ccw_device->dev, | 603 | dev_err(&adapter->ccw_device->dev, |
601 | "The FCP adapter only supports older " | 604 | "The FCP adapter only supports older " |
602 | "control block versions\n"); | 605 | "control block versions\n"); |
603 | zfcp_erp_adapter_shutdown(adapter, 0, 126, req); | 606 | zfcp_erp_adapter_shutdown(adapter, 0, "fsecdh5", req); |
604 | } | 607 | } |
605 | } | 608 | } |
606 | 609 | ||
@@ -634,7 +637,7 @@ static void zfcp_fsf_exchange_port_data_handler(struct zfcp_fsf_req *req) | |||
634 | break; | 637 | break; |
635 | case FSF_EXCHANGE_CONFIG_DATA_INCOMPLETE: | 638 | case FSF_EXCHANGE_CONFIG_DATA_INCOMPLETE: |
636 | zfcp_fsf_exchange_port_evaluate(req); | 639 | zfcp_fsf_exchange_port_evaluate(req); |
637 | zfcp_fsf_link_down_info_eval(req, 43, | 640 | zfcp_fsf_link_down_info_eval(req, "fsepdh1", |
638 | &qtcb->header.fsf_status_qual.link_down_info); | 641 | &qtcb->header.fsf_status_qual.link_down_info); |
639 | break; | 642 | break; |
640 | } | 643 | } |
@@ -779,7 +782,7 @@ static int zfcp_fsf_req_send(struct zfcp_fsf_req *req) | |||
779 | if (zfcp_reqlist_find_safe(adapter, req)) | 782 | if (zfcp_reqlist_find_safe(adapter, req)) |
780 | zfcp_reqlist_remove(adapter, req); | 783 | zfcp_reqlist_remove(adapter, req); |
781 | spin_unlock_irqrestore(&adapter->req_list_lock, flags); | 784 | spin_unlock_irqrestore(&adapter->req_list_lock, flags); |
782 | zfcp_erp_adapter_reopen(adapter, 0, 116, req); | 785 | zfcp_erp_adapter_reopen(adapter, 0, "fsrs__1", req); |
783 | return -EIO; | 786 | return -EIO; |
784 | } | 787 | } |
785 | 788 | ||
@@ -859,14 +862,14 @@ static void zfcp_fsf_abort_fcp_command_handler(struct zfcp_fsf_req *req) | |||
859 | switch (req->qtcb->header.fsf_status) { | 862 | switch (req->qtcb->header.fsf_status) { |
860 | case FSF_PORT_HANDLE_NOT_VALID: | 863 | case FSF_PORT_HANDLE_NOT_VALID: |
861 | if (fsq->word[0] == fsq->word[1]) { | 864 | if (fsq->word[0] == fsq->word[1]) { |
862 | zfcp_erp_adapter_reopen(unit->port->adapter, 0, 104, | 865 | zfcp_erp_adapter_reopen(unit->port->adapter, 0, |
863 | req); | 866 | "fsafch1", req); |
864 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 867 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
865 | } | 868 | } |
866 | break; | 869 | break; |
867 | case FSF_LUN_HANDLE_NOT_VALID: | 870 | case FSF_LUN_HANDLE_NOT_VALID: |
868 | if (fsq->word[0] == fsq->word[1]) { | 871 | if (fsq->word[0] == fsq->word[1]) { |
869 | zfcp_erp_port_reopen(unit->port, 0, 105, req); | 872 | zfcp_erp_port_reopen(unit->port, 0, "fsafch2", req); |
870 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 873 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
871 | } | 874 | } |
872 | break; | 875 | break; |
@@ -874,12 +877,12 @@ static void zfcp_fsf_abort_fcp_command_handler(struct zfcp_fsf_req *req) | |||
874 | req->status |= ZFCP_STATUS_FSFREQ_ABORTNOTNEEDED; | 877 | req->status |= ZFCP_STATUS_FSFREQ_ABORTNOTNEEDED; |
875 | break; | 878 | break; |
876 | case FSF_PORT_BOXED: | 879 | case FSF_PORT_BOXED: |
877 | zfcp_erp_port_boxed(unit->port, 47, req); | 880 | zfcp_erp_port_boxed(unit->port, "fsafch3", req); |
878 | req->status |= ZFCP_STATUS_FSFREQ_ERROR | | 881 | req->status |= ZFCP_STATUS_FSFREQ_ERROR | |
879 | ZFCP_STATUS_FSFREQ_RETRY; | 882 | ZFCP_STATUS_FSFREQ_RETRY; |
880 | break; | 883 | break; |
881 | case FSF_LUN_BOXED: | 884 | case FSF_LUN_BOXED: |
882 | zfcp_erp_unit_boxed(unit, 48, req); | 885 | zfcp_erp_unit_boxed(unit, "fsafch4", req); |
883 | req->status |= ZFCP_STATUS_FSFREQ_ERROR | | 886 | req->status |= ZFCP_STATUS_FSFREQ_ERROR | |
884 | ZFCP_STATUS_FSFREQ_RETRY; | 887 | ZFCP_STATUS_FSFREQ_RETRY; |
885 | break; | 888 | break; |
@@ -982,7 +985,7 @@ static void zfcp_fsf_send_ct_handler(struct zfcp_fsf_req *req) | |||
982 | ZFCP_STATUS_FSFREQ_RETRY; | 985 | ZFCP_STATUS_FSFREQ_RETRY; |
983 | break; | 986 | break; |
984 | case FSF_PORT_HANDLE_NOT_VALID: | 987 | case FSF_PORT_HANDLE_NOT_VALID: |
985 | zfcp_erp_adapter_reopen(adapter, 0, 106, req); | 988 | zfcp_erp_adapter_reopen(adapter, 0, "fsscth1", req); |
986 | case FSF_GENERIC_COMMAND_REJECTED: | 989 | case FSF_GENERIC_COMMAND_REJECTED: |
987 | case FSF_PAYLOAD_SIZE_MISMATCH: | 990 | case FSF_PAYLOAD_SIZE_MISMATCH: |
988 | case FSF_REQUEST_SIZE_TOO_LARGE: | 991 | case FSF_REQUEST_SIZE_TOO_LARGE: |
@@ -1400,7 +1403,7 @@ static void zfcp_fsf_open_port_handler(struct zfcp_fsf_req *req) | |||
1400 | "Not enough FCP adapter resources to open " | 1403 | "Not enough FCP adapter resources to open " |
1401 | "remote port 0x%016Lx\n", | 1404 | "remote port 0x%016Lx\n", |
1402 | (unsigned long long)port->wwpn); | 1405 | (unsigned long long)port->wwpn); |
1403 | zfcp_erp_port_failed(port, 31, req); | 1406 | zfcp_erp_port_failed(port, "fsoph_1", req); |
1404 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 1407 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
1405 | break; | 1408 | break; |
1406 | case FSF_ADAPTER_STATUS_AVAILABLE: | 1409 | case FSF_ADAPTER_STATUS_AVAILABLE: |
@@ -1506,13 +1509,13 @@ static void zfcp_fsf_close_port_handler(struct zfcp_fsf_req *req) | |||
1506 | 1509 | ||
1507 | switch (req->qtcb->header.fsf_status) { | 1510 | switch (req->qtcb->header.fsf_status) { |
1508 | case FSF_PORT_HANDLE_NOT_VALID: | 1511 | case FSF_PORT_HANDLE_NOT_VALID: |
1509 | zfcp_erp_adapter_reopen(port->adapter, 0, 107, req); | 1512 | zfcp_erp_adapter_reopen(port->adapter, 0, "fscph_1", req); |
1510 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 1513 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
1511 | break; | 1514 | break; |
1512 | case FSF_ADAPTER_STATUS_AVAILABLE: | 1515 | case FSF_ADAPTER_STATUS_AVAILABLE: |
1513 | break; | 1516 | break; |
1514 | case FSF_GOOD: | 1517 | case FSF_GOOD: |
1515 | zfcp_erp_modify_port_status(port, 33, req, | 1518 | zfcp_erp_modify_port_status(port, "fscph_2", req, |
1516 | ZFCP_STATUS_COMMON_OPEN, | 1519 | ZFCP_STATUS_COMMON_OPEN, |
1517 | ZFCP_CLEAR); | 1520 | ZFCP_CLEAR); |
1518 | break; | 1521 | break; |
@@ -1641,7 +1644,7 @@ static void zfcp_fsf_close_wka_port_handler(struct zfcp_fsf_req *req) | |||
1641 | 1644 | ||
1642 | if (req->qtcb->header.fsf_status == FSF_PORT_HANDLE_NOT_VALID) { | 1645 | if (req->qtcb->header.fsf_status == FSF_PORT_HANDLE_NOT_VALID) { |
1643 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 1646 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
1644 | zfcp_erp_adapter_reopen(wka_port->adapter, 0, 84, req); | 1647 | zfcp_erp_adapter_reopen(wka_port->adapter, 0, "fscwph1", req); |
1645 | } | 1648 | } |
1646 | 1649 | ||
1647 | wka_port->status = ZFCP_WKA_PORT_OFFLINE; | 1650 | wka_port->status = ZFCP_WKA_PORT_OFFLINE; |
@@ -1700,14 +1703,14 @@ static void zfcp_fsf_close_physical_port_handler(struct zfcp_fsf_req *req) | |||
1700 | 1703 | ||
1701 | switch (header->fsf_status) { | 1704 | switch (header->fsf_status) { |
1702 | case FSF_PORT_HANDLE_NOT_VALID: | 1705 | case FSF_PORT_HANDLE_NOT_VALID: |
1703 | zfcp_erp_adapter_reopen(port->adapter, 0, 108, req); | 1706 | zfcp_erp_adapter_reopen(port->adapter, 0, "fscpph1", req); |
1704 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 1707 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
1705 | break; | 1708 | break; |
1706 | case FSF_ACCESS_DENIED: | 1709 | case FSF_ACCESS_DENIED: |
1707 | zfcp_fsf_access_denied_port(req, port); | 1710 | zfcp_fsf_access_denied_port(req, port); |
1708 | break; | 1711 | break; |
1709 | case FSF_PORT_BOXED: | 1712 | case FSF_PORT_BOXED: |
1710 | zfcp_erp_port_boxed(port, 50, req); | 1713 | zfcp_erp_port_boxed(port, "fscpph2", req); |
1711 | req->status |= ZFCP_STATUS_FSFREQ_ERROR | | 1714 | req->status |= ZFCP_STATUS_FSFREQ_ERROR | |
1712 | ZFCP_STATUS_FSFREQ_RETRY; | 1715 | ZFCP_STATUS_FSFREQ_RETRY; |
1713 | /* can't use generic zfcp_erp_modify_port_status because | 1716 | /* can't use generic zfcp_erp_modify_port_status because |
@@ -1805,7 +1808,7 @@ static void zfcp_fsf_open_unit_handler(struct zfcp_fsf_req *req) | |||
1805 | switch (header->fsf_status) { | 1808 | switch (header->fsf_status) { |
1806 | 1809 | ||
1807 | case FSF_PORT_HANDLE_NOT_VALID: | 1810 | case FSF_PORT_HANDLE_NOT_VALID: |
1808 | zfcp_erp_adapter_reopen(unit->port->adapter, 0, 109, req); | 1811 | zfcp_erp_adapter_reopen(unit->port->adapter, 0, "fsouh_1", req); |
1809 | /* fall through */ | 1812 | /* fall through */ |
1810 | case FSF_LUN_ALREADY_OPEN: | 1813 | case FSF_LUN_ALREADY_OPEN: |
1811 | break; | 1814 | break; |
@@ -1815,7 +1818,7 @@ static void zfcp_fsf_open_unit_handler(struct zfcp_fsf_req *req) | |||
1815 | atomic_clear_mask(ZFCP_STATUS_UNIT_READONLY, &unit->status); | 1818 | atomic_clear_mask(ZFCP_STATUS_UNIT_READONLY, &unit->status); |
1816 | break; | 1819 | break; |
1817 | case FSF_PORT_BOXED: | 1820 | case FSF_PORT_BOXED: |
1818 | zfcp_erp_port_boxed(unit->port, 51, req); | 1821 | zfcp_erp_port_boxed(unit->port, "fsouh_2", req); |
1819 | req->status |= ZFCP_STATUS_FSFREQ_ERROR | | 1822 | req->status |= ZFCP_STATUS_FSFREQ_ERROR | |
1820 | ZFCP_STATUS_FSFREQ_RETRY; | 1823 | ZFCP_STATUS_FSFREQ_RETRY; |
1821 | break; | 1824 | break; |
@@ -1831,7 +1834,7 @@ static void zfcp_fsf_open_unit_handler(struct zfcp_fsf_req *req) | |||
1831 | else | 1834 | else |
1832 | zfcp_act_eval_err(adapter, | 1835 | zfcp_act_eval_err(adapter, |
1833 | header->fsf_status_qual.word[2]); | 1836 | header->fsf_status_qual.word[2]); |
1834 | zfcp_erp_unit_access_denied(unit, 60, req); | 1837 | zfcp_erp_unit_access_denied(unit, "fsouh_3", req); |
1835 | atomic_clear_mask(ZFCP_STATUS_UNIT_SHARED, &unit->status); | 1838 | atomic_clear_mask(ZFCP_STATUS_UNIT_SHARED, &unit->status); |
1836 | atomic_clear_mask(ZFCP_STATUS_UNIT_READONLY, &unit->status); | 1839 | atomic_clear_mask(ZFCP_STATUS_UNIT_READONLY, &unit->status); |
1837 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 1840 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
@@ -1842,7 +1845,7 @@ static void zfcp_fsf_open_unit_handler(struct zfcp_fsf_req *req) | |||
1842 | "0x%016Lx on port 0x%016Lx\n", | 1845 | "0x%016Lx on port 0x%016Lx\n", |
1843 | (unsigned long long)unit->fcp_lun, | 1846 | (unsigned long long)unit->fcp_lun, |
1844 | (unsigned long long)unit->port->wwpn); | 1847 | (unsigned long long)unit->port->wwpn); |
1845 | zfcp_erp_unit_failed(unit, 34, req); | 1848 | zfcp_erp_unit_failed(unit, "fsouh_4", req); |
1846 | /* fall through */ | 1849 | /* fall through */ |
1847 | case FSF_INVALID_COMMAND_OPTION: | 1850 | case FSF_INVALID_COMMAND_OPTION: |
1848 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 1851 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
@@ -1891,9 +1894,9 @@ static void zfcp_fsf_open_unit_handler(struct zfcp_fsf_req *req) | |||
1891 | "port 0x%016Lx)\n", | 1894 | "port 0x%016Lx)\n", |
1892 | (unsigned long long)unit->fcp_lun, | 1895 | (unsigned long long)unit->fcp_lun, |
1893 | (unsigned long long)unit->port->wwpn); | 1896 | (unsigned long long)unit->port->wwpn); |
1894 | zfcp_erp_unit_failed(unit, 35, req); | 1897 | zfcp_erp_unit_failed(unit, "fsouh_5", req); |
1895 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 1898 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
1896 | zfcp_erp_unit_shutdown(unit, 0, 80, req); | 1899 | zfcp_erp_unit_shutdown(unit, 0, "fsouh_6", req); |
1897 | } else if (!exclusive && readwrite) { | 1900 | } else if (!exclusive && readwrite) { |
1898 | dev_err(&adapter->ccw_device->dev, | 1901 | dev_err(&adapter->ccw_device->dev, |
1899 | "Shared read-write access not " | 1902 | "Shared read-write access not " |
@@ -1901,9 +1904,9 @@ static void zfcp_fsf_open_unit_handler(struct zfcp_fsf_req *req) | |||
1901 | "0x%016Lx)\n", | 1904 | "0x%016Lx)\n", |
1902 | (unsigned long long)unit->fcp_lun, | 1905 | (unsigned long long)unit->fcp_lun, |
1903 | (unsigned long long)unit->port->wwpn); | 1906 | (unsigned long long)unit->port->wwpn); |
1904 | zfcp_erp_unit_failed(unit, 36, req); | 1907 | zfcp_erp_unit_failed(unit, "fsouh_7", req); |
1905 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 1908 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
1906 | zfcp_erp_unit_shutdown(unit, 0, 81, req); | 1909 | zfcp_erp_unit_shutdown(unit, 0, "fsouh_8", req); |
1907 | } | 1910 | } |
1908 | } | 1911 | } |
1909 | break; | 1912 | break; |
@@ -1968,15 +1971,15 @@ static void zfcp_fsf_close_unit_handler(struct zfcp_fsf_req *req) | |||
1968 | 1971 | ||
1969 | switch (req->qtcb->header.fsf_status) { | 1972 | switch (req->qtcb->header.fsf_status) { |
1970 | case FSF_PORT_HANDLE_NOT_VALID: | 1973 | case FSF_PORT_HANDLE_NOT_VALID: |
1971 | zfcp_erp_adapter_reopen(unit->port->adapter, 0, 110, req); | 1974 | zfcp_erp_adapter_reopen(unit->port->adapter, 0, "fscuh_1", req); |
1972 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 1975 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
1973 | break; | 1976 | break; |
1974 | case FSF_LUN_HANDLE_NOT_VALID: | 1977 | case FSF_LUN_HANDLE_NOT_VALID: |
1975 | zfcp_erp_port_reopen(unit->port, 0, 111, req); | 1978 | zfcp_erp_port_reopen(unit->port, 0, "fscuh_2", req); |
1976 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 1979 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
1977 | break; | 1980 | break; |
1978 | case FSF_PORT_BOXED: | 1981 | case FSF_PORT_BOXED: |
1979 | zfcp_erp_port_boxed(unit->port, 52, req); | 1982 | zfcp_erp_port_boxed(unit->port, "fscuh_3", req); |
1980 | req->status |= ZFCP_STATUS_FSFREQ_ERROR | | 1983 | req->status |= ZFCP_STATUS_FSFREQ_ERROR | |
1981 | ZFCP_STATUS_FSFREQ_RETRY; | 1984 | ZFCP_STATUS_FSFREQ_RETRY; |
1982 | break; | 1985 | break; |
@@ -2215,12 +2218,12 @@ static void zfcp_fsf_send_fcp_command_handler(struct zfcp_fsf_req *req) | |||
2215 | switch (header->fsf_status) { | 2218 | switch (header->fsf_status) { |
2216 | case FSF_HANDLE_MISMATCH: | 2219 | case FSF_HANDLE_MISMATCH: |
2217 | case FSF_PORT_HANDLE_NOT_VALID: | 2220 | case FSF_PORT_HANDLE_NOT_VALID: |
2218 | zfcp_erp_adapter_reopen(unit->port->adapter, 0, 112, req); | 2221 | zfcp_erp_adapter_reopen(unit->port->adapter, 0, "fssfch1", req); |
2219 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 2222 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
2220 | break; | 2223 | break; |
2221 | case FSF_FCPLUN_NOT_VALID: | 2224 | case FSF_FCPLUN_NOT_VALID: |
2222 | case FSF_LUN_HANDLE_NOT_VALID: | 2225 | case FSF_LUN_HANDLE_NOT_VALID: |
2223 | zfcp_erp_port_reopen(unit->port, 0, 113, req); | 2226 | zfcp_erp_port_reopen(unit->port, 0, "fssfch2", req); |
2224 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 2227 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
2225 | break; | 2228 | break; |
2226 | case FSF_SERVICE_CLASS_NOT_SUPPORTED: | 2229 | case FSF_SERVICE_CLASS_NOT_SUPPORTED: |
@@ -2236,7 +2239,8 @@ static void zfcp_fsf_send_fcp_command_handler(struct zfcp_fsf_req *req) | |||
2236 | req->qtcb->bottom.io.data_direction, | 2239 | req->qtcb->bottom.io.data_direction, |
2237 | (unsigned long long)unit->fcp_lun, | 2240 | (unsigned long long)unit->fcp_lun, |
2238 | (unsigned long long)unit->port->wwpn); | 2241 | (unsigned long long)unit->port->wwpn); |
2239 | zfcp_erp_adapter_shutdown(unit->port->adapter, 0, 133, req); | 2242 | zfcp_erp_adapter_shutdown(unit->port->adapter, 0, "fssfch3", |
2243 | req); | ||
2240 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 2244 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
2241 | break; | 2245 | break; |
2242 | case FSF_CMND_LENGTH_NOT_VALID: | 2246 | case FSF_CMND_LENGTH_NOT_VALID: |
@@ -2246,16 +2250,17 @@ static void zfcp_fsf_send_fcp_command_handler(struct zfcp_fsf_req *req) | |||
2246 | req->qtcb->bottom.io.fcp_cmnd_length, | 2250 | req->qtcb->bottom.io.fcp_cmnd_length, |
2247 | (unsigned long long)unit->fcp_lun, | 2251 | (unsigned long long)unit->fcp_lun, |
2248 | (unsigned long long)unit->port->wwpn); | 2252 | (unsigned long long)unit->port->wwpn); |
2249 | zfcp_erp_adapter_shutdown(unit->port->adapter, 0, 134, req); | 2253 | zfcp_erp_adapter_shutdown(unit->port->adapter, 0, "fssfch4", |
2254 | req); | ||
2250 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; | 2255 | req->status |= ZFCP_STATUS_FSFREQ_ERROR; |
2251 | break; | 2256 | break; |
2252 | case FSF_PORT_BOXED: | 2257 | case FSF_PORT_BOXED: |
2253 | zfcp_erp_port_boxed(unit->port, 53, req); | 2258 | zfcp_erp_port_boxed(unit->port, "fssfch5", req); |
2254 | req->status |= ZFCP_STATUS_FSFREQ_ERROR | | 2259 | req->status |= ZFCP_STATUS_FSFREQ_ERROR | |
2255 | ZFCP_STATUS_FSFREQ_RETRY; | 2260 | ZFCP_STATUS_FSFREQ_RETRY; |
2256 | break; | 2261 | break; |
2257 | case FSF_LUN_BOXED: | 2262 | case FSF_LUN_BOXED: |
2258 | zfcp_erp_unit_boxed(unit, 54, req); | 2263 | zfcp_erp_unit_boxed(unit, "fssfch6", req); |
2259 | req->status |= ZFCP_STATUS_FSFREQ_ERROR | | 2264 | req->status |= ZFCP_STATUS_FSFREQ_ERROR | |
2260 | ZFCP_STATUS_FSFREQ_RETRY; | 2265 | ZFCP_STATUS_FSFREQ_RETRY; |
2261 | break; | 2266 | break; |
@@ -2388,7 +2393,7 @@ int zfcp_fsf_send_fcp_command_task(struct zfcp_unit *unit, | |||
2388 | "on port 0x%016Lx closed\n", | 2393 | "on port 0x%016Lx closed\n", |
2389 | (unsigned long long)unit->fcp_lun, | 2394 | (unsigned long long)unit->fcp_lun, |
2390 | (unsigned long long)unit->port->wwpn); | 2395 | (unsigned long long)unit->port->wwpn); |
2391 | zfcp_erp_unit_shutdown(unit, 0, 131, req); | 2396 | zfcp_erp_unit_shutdown(unit, 0, "fssfct1", req); |
2392 | retval = -EINVAL; | 2397 | retval = -EINVAL; |
2393 | } | 2398 | } |
2394 | goto failed_scsi_cmnd; | 2399 | goto failed_scsi_cmnd; |
diff --git a/drivers/s390/scsi/zfcp_qdio.c b/drivers/s390/scsi/zfcp_qdio.c index 3d0687090274..c2eb94f6370f 100644 --- a/drivers/s390/scsi/zfcp_qdio.c +++ b/drivers/s390/scsi/zfcp_qdio.c | |||
@@ -58,7 +58,7 @@ void zfcp_qdio_free(struct zfcp_adapter *adapter) | |||
58 | } | 58 | } |
59 | } | 59 | } |
60 | 60 | ||
61 | static void zfcp_qdio_handler_error(struct zfcp_adapter *adapter, u8 id) | 61 | static void zfcp_qdio_handler_error(struct zfcp_adapter *adapter, char *id) |
62 | { | 62 | { |
63 | dev_warn(&adapter->ccw_device->dev, "A QDIO problem occurred\n"); | 63 | dev_warn(&adapter->ccw_device->dev, "A QDIO problem occurred\n"); |
64 | 64 | ||
@@ -103,7 +103,7 @@ static void zfcp_qdio_int_req(struct ccw_device *cdev, unsigned int qdio_err, | |||
103 | 103 | ||
104 | if (unlikely(qdio_err)) { | 104 | if (unlikely(qdio_err)) { |
105 | zfcp_hba_dbf_event_qdio(adapter, qdio_err, first, count); | 105 | zfcp_hba_dbf_event_qdio(adapter, qdio_err, first, count); |
106 | zfcp_qdio_handler_error(adapter, 140); | 106 | zfcp_qdio_handler_error(adapter, "qdireq1"); |
107 | return; | 107 | return; |
108 | } | 108 | } |
109 | 109 | ||
@@ -172,7 +172,7 @@ static void zfcp_qdio_int_resp(struct ccw_device *cdev, unsigned int qdio_err, | |||
172 | 172 | ||
173 | if (unlikely(qdio_err)) { | 173 | if (unlikely(qdio_err)) { |
174 | zfcp_hba_dbf_event_qdio(adapter, qdio_err, first, count); | 174 | zfcp_hba_dbf_event_qdio(adapter, qdio_err, first, count); |
175 | zfcp_qdio_handler_error(adapter, 147); | 175 | zfcp_qdio_handler_error(adapter, "qdires1"); |
176 | return; | 176 | return; |
177 | } | 177 | } |
178 | 178 | ||
diff --git a/drivers/s390/scsi/zfcp_scsi.c b/drivers/s390/scsi/zfcp_scsi.c index c17505f767a9..2af8cfbc3890 100644 --- a/drivers/s390/scsi/zfcp_scsi.c +++ b/drivers/s390/scsi/zfcp_scsi.c | |||
@@ -28,7 +28,7 @@ static void zfcp_scsi_slave_destroy(struct scsi_device *sdpnt) | |||
28 | { | 28 | { |
29 | struct zfcp_unit *unit = (struct zfcp_unit *) sdpnt->hostdata; | 29 | struct zfcp_unit *unit = (struct zfcp_unit *) sdpnt->hostdata; |
30 | unit->device = NULL; | 30 | unit->device = NULL; |
31 | zfcp_erp_unit_failed(unit, 12, NULL); | 31 | zfcp_erp_unit_failed(unit, "scslvd1", NULL); |
32 | zfcp_unit_put(unit); | 32 | zfcp_unit_put(unit); |
33 | } | 33 | } |
34 | 34 | ||
@@ -257,7 +257,7 @@ static int zfcp_scsi_eh_host_reset_handler(struct scsi_cmnd *scpnt) | |||
257 | struct zfcp_unit *unit = scpnt->device->hostdata; | 257 | struct zfcp_unit *unit = scpnt->device->hostdata; |
258 | struct zfcp_adapter *adapter = unit->port->adapter; | 258 | struct zfcp_adapter *adapter = unit->port->adapter; |
259 | 259 | ||
260 | zfcp_erp_adapter_reopen(adapter, 0, 141, scpnt); | 260 | zfcp_erp_adapter_reopen(adapter, 0, "schrh_1", scpnt); |
261 | zfcp_erp_wait(adapter); | 261 | zfcp_erp_wait(adapter); |
262 | 262 | ||
263 | return SUCCESS; | 263 | return SUCCESS; |
diff --git a/drivers/s390/scsi/zfcp_sysfs.c b/drivers/s390/scsi/zfcp_sysfs.c index 14e38c231f01..9a3b8e261c0a 100644 --- a/drivers/s390/scsi/zfcp_sysfs.c +++ b/drivers/s390/scsi/zfcp_sysfs.c | |||
@@ -112,9 +112,9 @@ static ZFCP_DEV_ATTR(_feat, failed, S_IWUSR | S_IRUGO, \ | |||
112 | zfcp_sysfs_##_feat##_failed_show, \ | 112 | zfcp_sysfs_##_feat##_failed_show, \ |
113 | zfcp_sysfs_##_feat##_failed_store); | 113 | zfcp_sysfs_##_feat##_failed_store); |
114 | 114 | ||
115 | ZFCP_SYSFS_FAILED(zfcp_adapter, adapter, adapter, 44, 93); | 115 | ZFCP_SYSFS_FAILED(zfcp_adapter, adapter, adapter, "syafai1", "syafai2"); |
116 | ZFCP_SYSFS_FAILED(zfcp_port, port, port->adapter, 45, 96); | 116 | ZFCP_SYSFS_FAILED(zfcp_port, port, port->adapter, "sypfai1", "sypfai2"); |
117 | ZFCP_SYSFS_FAILED(zfcp_unit, unit, unit->port->adapter, 46, 97); | 117 | ZFCP_SYSFS_FAILED(zfcp_unit, unit, unit->port->adapter, "syufai1", "syufai2"); |
118 | 118 | ||
119 | static ssize_t zfcp_sysfs_port_rescan_store(struct device *dev, | 119 | static ssize_t zfcp_sysfs_port_rescan_store(struct device *dev, |
120 | struct device_attribute *attr, | 120 | struct device_attribute *attr, |
@@ -168,7 +168,7 @@ static ssize_t zfcp_sysfs_port_remove_store(struct device *dev, | |||
168 | goto out; | 168 | goto out; |
169 | } | 169 | } |
170 | 170 | ||
171 | zfcp_erp_port_shutdown(port, 0, 92, NULL); | 171 | zfcp_erp_port_shutdown(port, 0, "syprs_1", NULL); |
172 | zfcp_erp_wait(adapter); | 172 | zfcp_erp_wait(adapter); |
173 | zfcp_port_put(port); | 173 | zfcp_port_put(port); |
174 | zfcp_port_dequeue(port); | 174 | zfcp_port_dequeue(port); |
@@ -222,7 +222,7 @@ static ssize_t zfcp_sysfs_unit_add_store(struct device *dev, | |||
222 | 222 | ||
223 | retval = 0; | 223 | retval = 0; |
224 | 224 | ||
225 | zfcp_erp_unit_reopen(unit, 0, 94, NULL); | 225 | zfcp_erp_unit_reopen(unit, 0, "syuas_1", NULL); |
226 | zfcp_erp_wait(unit->port->adapter); | 226 | zfcp_erp_wait(unit->port->adapter); |
227 | zfcp_unit_put(unit); | 227 | zfcp_unit_put(unit); |
228 | out: | 228 | out: |
@@ -268,7 +268,7 @@ static ssize_t zfcp_sysfs_unit_remove_store(struct device *dev, | |||
268 | goto out; | 268 | goto out; |
269 | } | 269 | } |
270 | 270 | ||
271 | zfcp_erp_unit_shutdown(unit, 0, 95, NULL); | 271 | zfcp_erp_unit_shutdown(unit, 0, "syurs_1", NULL); |
272 | zfcp_erp_wait(unit->port->adapter); | 272 | zfcp_erp_wait(unit->port->adapter); |
273 | zfcp_unit_put(unit); | 273 | zfcp_unit_put(unit); |
274 | zfcp_unit_dequeue(unit); | 274 | zfcp_unit_dequeue(unit); |