diff options
author | Swen Schillig <swen@vnet.ibm.com> | 2010-12-02 09:16:13 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-12-21 13:24:45 -0500 |
commit | 2c55b750a884b86dea8b4cc5f15e1484cc47a25c (patch) | |
tree | 0f7e53365fc93504c6a23a14d0faae16998861e8 /drivers/s390/scsi | |
parent | ae0904f60fab7cb20c48d32eefdd735e478b91fb (diff) |
[SCSI] zfcp: Redesign of the debug tracing for SAN records.
This patch is the continuation to redesign the zfcp tracing to a more
straight-forward and easy to extend scheme.
This patch deals with all trace records of the zfcp SAN area.
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@suse.de>
Diffstat (limited to 'drivers/s390/scsi')
-rw-r--r-- | drivers/s390/scsi/zfcp_dbf.c | 201 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_dbf.h | 68 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_ext.h | 8 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_fc.c | 2 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_fsf.c | 8 |
5 files changed, 85 insertions, 202 deletions
diff --git a/drivers/s390/scsi/zfcp_dbf.c b/drivers/s390/scsi/zfcp_dbf.c index 675503628cc..6ece47e5148 100644 --- a/drivers/s390/scsi/zfcp_dbf.c +++ b/drivers/s390/scsi/zfcp_dbf.c | |||
@@ -527,183 +527,79 @@ void zfcp_dbf_rec_run(char *tag, struct zfcp_erp_action *erp) | |||
527 | spin_unlock_irqrestore(&dbf->rec_lock, flags); | 527 | spin_unlock_irqrestore(&dbf->rec_lock, flags); |
528 | } | 528 | } |
529 | 529 | ||
530 | /** | 530 | static inline |
531 | * zfcp_dbf_san_ct_request - trace event for issued CT request | 531 | void zfcp_dbf_san(char *tag, struct zfcp_dbf *dbf, void *data, u8 id, u16 len, |
532 | * @fsf_req: request containing issued CT data | 532 | u64 req_id, u32 d_id) |
533 | * @d_id: destination id where ct request is sent to | ||
534 | */ | ||
535 | void zfcp_dbf_san_ct_request(struct zfcp_fsf_req *fsf_req, u32 d_id) | ||
536 | { | ||
537 | struct zfcp_fsf_ct_els *ct = (struct zfcp_fsf_ct_els *)fsf_req->data; | ||
538 | struct zfcp_adapter *adapter = fsf_req->adapter; | ||
539 | struct zfcp_dbf *dbf = adapter->dbf; | ||
540 | struct fc_ct_hdr *hdr = sg_virt(ct->req); | ||
541 | struct zfcp_dbf_san_record *r = &dbf->san_buf; | ||
542 | struct zfcp_dbf_san_record_ct_request *oct = &r->u.ct_req; | ||
543 | int level = 3; | ||
544 | unsigned long flags; | ||
545 | |||
546 | spin_lock_irqsave(&dbf->san_lock, flags); | ||
547 | memset(r, 0, sizeof(*r)); | ||
548 | strncpy(r->tag, "octc", ZFCP_DBF_TAG_SIZE); | ||
549 | r->fsf_reqid = fsf_req->req_id; | ||
550 | r->fsf_seqno = fsf_req->seq_no; | ||
551 | oct->d_id = d_id; | ||
552 | oct->cmd_req_code = hdr->ct_cmd; | ||
553 | oct->revision = hdr->ct_rev; | ||
554 | oct->gs_type = hdr->ct_fs_type; | ||
555 | oct->gs_subtype = hdr->ct_fs_subtype; | ||
556 | oct->options = hdr->ct_options; | ||
557 | oct->max_res_size = hdr->ct_mr_size; | ||
558 | oct->len = min((int)ct->req->length - (int)sizeof(struct fc_ct_hdr), | ||
559 | ZFCP_DBF_SAN_MAX_PAYLOAD); | ||
560 | debug_event(dbf->san, level, r, sizeof(*r)); | ||
561 | zfcp_dbf_hexdump(dbf->san, r, sizeof(*r), level, | ||
562 | (void *)hdr + sizeof(struct fc_ct_hdr), oct->len); | ||
563 | spin_unlock_irqrestore(&dbf->san_lock, flags); | ||
564 | } | ||
565 | |||
566 | /** | ||
567 | * zfcp_dbf_san_ct_response - trace event for completion of CT request | ||
568 | * @fsf_req: request containing CT response | ||
569 | */ | ||
570 | void zfcp_dbf_san_ct_response(struct zfcp_fsf_req *fsf_req) | ||
571 | { | 533 | { |
572 | struct zfcp_fsf_ct_els *ct = (struct zfcp_fsf_ct_els *)fsf_req->data; | 534 | struct zfcp_dbf_san *rec = &dbf->san_buf; |
573 | struct zfcp_adapter *adapter = fsf_req->adapter; | 535 | u16 rec_len; |
574 | struct fc_ct_hdr *hdr = sg_virt(ct->resp); | ||
575 | struct zfcp_dbf *dbf = adapter->dbf; | ||
576 | struct zfcp_dbf_san_record *r = &dbf->san_buf; | ||
577 | struct zfcp_dbf_san_record_ct_response *rct = &r->u.ct_resp; | ||
578 | int level = 3; | ||
579 | unsigned long flags; | 536 | unsigned long flags; |
580 | 537 | ||
581 | spin_lock_irqsave(&dbf->san_lock, flags); | 538 | spin_lock_irqsave(&dbf->san_lock, flags); |
582 | memset(r, 0, sizeof(*r)); | 539 | memset(rec, 0, sizeof(*rec)); |
583 | strncpy(r->tag, "rctc", ZFCP_DBF_TAG_SIZE); | ||
584 | r->fsf_reqid = fsf_req->req_id; | ||
585 | r->fsf_seqno = fsf_req->seq_no; | ||
586 | rct->cmd_rsp_code = hdr->ct_cmd; | ||
587 | rct->revision = hdr->ct_rev; | ||
588 | rct->reason_code = hdr->ct_reason; | ||
589 | rct->expl = hdr->ct_explan; | ||
590 | rct->vendor_unique = hdr->ct_vendor; | ||
591 | rct->max_res_size = hdr->ct_mr_size; | ||
592 | rct->len = min((int)ct->resp->length - (int)sizeof(struct fc_ct_hdr), | ||
593 | ZFCP_DBF_SAN_MAX_PAYLOAD); | ||
594 | debug_event(dbf->san, level, r, sizeof(*r)); | ||
595 | zfcp_dbf_hexdump(dbf->san, r, sizeof(*r), level, | ||
596 | (void *)hdr + sizeof(struct fc_ct_hdr), rct->len); | ||
597 | spin_unlock_irqrestore(&dbf->san_lock, flags); | ||
598 | } | ||
599 | 540 | ||
600 | static void zfcp_dbf_san_els(const char *tag, int level, | 541 | rec->id = id; |
601 | struct zfcp_fsf_req *fsf_req, u32 d_id, | 542 | rec->fsf_req_id = req_id; |
602 | void *buffer, int buflen) | 543 | rec->d_id = d_id; |
603 | { | 544 | rec_len = min(len, (u16)ZFCP_DBF_SAN_MAX_PAYLOAD); |
604 | struct zfcp_adapter *adapter = fsf_req->adapter; | 545 | memcpy(rec->payload, data, rec_len); |
605 | struct zfcp_dbf *dbf = adapter->dbf; | 546 | memcpy(rec->tag, tag, ZFCP_DBF_TAG_LEN); |
606 | struct zfcp_dbf_san_record *rec = &dbf->san_buf; | ||
607 | unsigned long flags; | ||
608 | 547 | ||
609 | spin_lock_irqsave(&dbf->san_lock, flags); | 548 | debug_event(dbf->san, 1, rec, sizeof(*rec)); |
610 | memset(rec, 0, sizeof(*rec)); | ||
611 | strncpy(rec->tag, tag, ZFCP_DBF_TAG_SIZE); | ||
612 | rec->fsf_reqid = fsf_req->req_id; | ||
613 | rec->fsf_seqno = fsf_req->seq_no; | ||
614 | rec->u.els.d_id = d_id; | ||
615 | debug_event(dbf->san, level, rec, sizeof(*rec)); | ||
616 | zfcp_dbf_hexdump(dbf->san, rec, sizeof(*rec), level, | ||
617 | buffer, min(buflen, ZFCP_DBF_SAN_MAX_PAYLOAD)); | ||
618 | spin_unlock_irqrestore(&dbf->san_lock, flags); | 549 | spin_unlock_irqrestore(&dbf->san_lock, flags); |
619 | } | 550 | } |
620 | 551 | ||
621 | /** | 552 | /** |
622 | * zfcp_dbf_san_els_request - trace event for issued ELS | 553 | * zfcp_dbf_san_req - trace event for issued SAN request |
623 | * @fsf_req: request containing issued ELS | 554 | * @tag: indentifier for event |
555 | * @fsf_req: request containing issued CT data | ||
556 | * d_id: destination ID | ||
624 | */ | 557 | */ |
625 | void zfcp_dbf_san_els_request(struct zfcp_fsf_req *fsf_req) | 558 | void zfcp_dbf_san_req(char *tag, struct zfcp_fsf_req *fsf, u32 d_id) |
626 | { | 559 | { |
627 | struct zfcp_fsf_ct_els *els = (struct zfcp_fsf_ct_els *)fsf_req->data; | 560 | struct zfcp_dbf *dbf = fsf->adapter->dbf; |
628 | u32 d_id = ntoh24(fsf_req->qtcb->bottom.support.d_id); | 561 | struct zfcp_fsf_ct_els *ct_els = fsf->data; |
562 | u16 length; | ||
629 | 563 | ||
630 | zfcp_dbf_san_els("oels", 2, fsf_req, d_id, | 564 | length = (u16)(ct_els->req->length + FC_CT_HDR_LEN); |
631 | sg_virt(els->req), els->req->length); | 565 | zfcp_dbf_san(tag, dbf, sg_virt(ct_els->req), ZFCP_DBF_SAN_REQ, length, |
566 | fsf->req_id, d_id); | ||
632 | } | 567 | } |
633 | 568 | ||
634 | /** | 569 | /** |
635 | * zfcp_dbf_san_els_response - trace event for completed ELS | 570 | * zfcp_dbf_san_res - trace event for received SAN request |
636 | * @fsf_req: request containing ELS response | 571 | * @tag: indentifier for event |
572 | * @fsf_req: request containing issued CT data | ||
637 | */ | 573 | */ |
638 | void zfcp_dbf_san_els_response(struct zfcp_fsf_req *fsf_req) | 574 | void zfcp_dbf_san_res(char *tag, struct zfcp_fsf_req *fsf) |
639 | { | 575 | { |
640 | struct zfcp_fsf_ct_els *els = (struct zfcp_fsf_ct_els *)fsf_req->data; | 576 | struct zfcp_dbf *dbf = fsf->adapter->dbf; |
641 | u32 d_id = ntoh24(fsf_req->qtcb->bottom.support.d_id); | 577 | struct zfcp_fsf_ct_els *ct_els = fsf->data; |
578 | u16 length; | ||
642 | 579 | ||
643 | zfcp_dbf_san_els("rels", 2, fsf_req, d_id, | 580 | length = (u16)(ct_els->resp->length + FC_CT_HDR_LEN); |
644 | sg_virt(els->resp), els->resp->length); | 581 | zfcp_dbf_san(tag, dbf, sg_virt(ct_els->resp), ZFCP_DBF_SAN_RES, length, |
582 | fsf->req_id, 0); | ||
645 | } | 583 | } |
646 | 584 | ||
647 | /** | 585 | /** |
648 | * zfcp_dbf_san_incoming_els - trace event for incomig ELS | 586 | * zfcp_dbf_san_in_els - trace event for incoming ELS |
649 | * @fsf_req: request containing unsolicited status buffer with incoming ELS | 587 | * @tag: indentifier for event |
588 | * @fsf_req: request containing issued CT data | ||
650 | */ | 589 | */ |
651 | void zfcp_dbf_san_incoming_els(struct zfcp_fsf_req *fsf_req) | 590 | void zfcp_dbf_san_in_els(char *tag, struct zfcp_fsf_req *fsf) |
652 | { | ||
653 | struct fsf_status_read_buffer *buf = | ||
654 | (struct fsf_status_read_buffer *)fsf_req->data; | ||
655 | int length = (int)buf->length - | ||
656 | (int)((void *)&buf->payload - (void *)buf); | ||
657 | |||
658 | zfcp_dbf_san_els("iels", 1, fsf_req, ntoh24(buf->d_id), | ||
659 | (void *)buf->payload.data, length); | ||
660 | } | ||
661 | |||
662 | static int zfcp_dbf_san_view_format(debug_info_t *id, struct debug_view *view, | ||
663 | char *out_buf, const char *in_buf) | ||
664 | { | 591 | { |
665 | struct zfcp_dbf_san_record *r = (struct zfcp_dbf_san_record *)in_buf; | 592 | struct zfcp_dbf *dbf = fsf->adapter->dbf; |
666 | char *p = out_buf; | 593 | struct fsf_status_read_buffer *srb = |
667 | 594 | (struct fsf_status_read_buffer *) fsf->data; | |
668 | if (strncmp(r->tag, "dump", ZFCP_DBF_TAG_SIZE) == 0) | 595 | u16 length; |
669 | return 0; | 596 | |
670 | 597 | length = (u16)(srb->length - | |
671 | zfcp_dbf_tag(&p, "tag", r->tag); | 598 | offsetof(struct fsf_status_read_buffer, payload)); |
672 | zfcp_dbf_out(&p, "fsf_reqid", "0x%0Lx", r->fsf_reqid); | 599 | zfcp_dbf_san(tag, dbf, srb->payload.data, ZFCP_DBF_SAN_ELS, length, |
673 | zfcp_dbf_out(&p, "fsf_seqno", "0x%08x", r->fsf_seqno); | 600 | fsf->req_id, ntoh24(srb->d_id)); |
674 | |||
675 | if (strncmp(r->tag, "octc", ZFCP_DBF_TAG_SIZE) == 0) { | ||
676 | struct zfcp_dbf_san_record_ct_request *ct = &r->u.ct_req; | ||
677 | zfcp_dbf_out(&p, "d_id", "0x%06x", ct->d_id); | ||
678 | zfcp_dbf_out(&p, "cmd_req_code", "0x%04x", ct->cmd_req_code); | ||
679 | zfcp_dbf_out(&p, "revision", "0x%02x", ct->revision); | ||
680 | zfcp_dbf_out(&p, "gs_type", "0x%02x", ct->gs_type); | ||
681 | zfcp_dbf_out(&p, "gs_subtype", "0x%02x", ct->gs_subtype); | ||
682 | zfcp_dbf_out(&p, "options", "0x%02x", ct->options); | ||
683 | zfcp_dbf_out(&p, "max_res_size", "0x%04x", ct->max_res_size); | ||
684 | } else if (strncmp(r->tag, "rctc", ZFCP_DBF_TAG_SIZE) == 0) { | ||
685 | struct zfcp_dbf_san_record_ct_response *ct = &r->u.ct_resp; | ||
686 | zfcp_dbf_out(&p, "cmd_rsp_code", "0x%04x", ct->cmd_rsp_code); | ||
687 | zfcp_dbf_out(&p, "revision", "0x%02x", ct->revision); | ||
688 | zfcp_dbf_out(&p, "reason_code", "0x%02x", ct->reason_code); | ||
689 | zfcp_dbf_out(&p, "reason_code_expl", "0x%02x", ct->expl); | ||
690 | zfcp_dbf_out(&p, "vendor_unique", "0x%02x", ct->vendor_unique); | ||
691 | zfcp_dbf_out(&p, "max_res_size", "0x%04x", ct->max_res_size); | ||
692 | } else if (strncmp(r->tag, "oels", ZFCP_DBF_TAG_SIZE) == 0 || | ||
693 | strncmp(r->tag, "rels", ZFCP_DBF_TAG_SIZE) == 0 || | ||
694 | strncmp(r->tag, "iels", ZFCP_DBF_TAG_SIZE) == 0) { | ||
695 | struct zfcp_dbf_san_record_els *els = &r->u.els; | ||
696 | zfcp_dbf_out(&p, "d_id", "0x%06x", els->d_id); | ||
697 | } | ||
698 | return p - out_buf; | ||
699 | } | 601 | } |
700 | 602 | ||
701 | static struct debug_view zfcp_dbf_san_view = { | ||
702 | .name = "structured", | ||
703 | .header_proc = zfcp_dbf_view_header, | ||
704 | .format_proc = zfcp_dbf_san_view_format, | ||
705 | }; | ||
706 | |||
707 | void _zfcp_dbf_scsi(const char *tag, const char *tag2, int level, | 603 | void _zfcp_dbf_scsi(const char *tag, const char *tag2, int level, |
708 | struct zfcp_dbf *dbf, struct scsi_cmnd *scsi_cmnd, | 604 | struct zfcp_dbf *dbf, struct scsi_cmnd *scsi_cmnd, |
709 | struct zfcp_fsf_req *fsf_req, unsigned long old_req_id) | 605 | struct zfcp_fsf_req *fsf_req, unsigned long old_req_id) |
@@ -882,8 +778,7 @@ int zfcp_dbf_adapter_register(struct zfcp_adapter *adapter) | |||
882 | 778 | ||
883 | /* debug feature area which records SAN command failures and recovery */ | 779 | /* debug feature area which records SAN command failures and recovery */ |
884 | sprintf(dbf_name, "zfcp_%s_san", dev_name(&adapter->ccw_device->dev)); | 780 | sprintf(dbf_name, "zfcp_%s_san", dev_name(&adapter->ccw_device->dev)); |
885 | dbf->san = zfcp_dbf_reg(dbf_name, 6, &zfcp_dbf_san_view, | 781 | dbf->san = zfcp_dbf_reg(dbf_name, 3, NULL, sizeof(struct zfcp_dbf_san)); |
886 | sizeof(struct zfcp_dbf_san_record)); | ||
887 | if (!dbf->san) | 782 | if (!dbf->san) |
888 | goto err_out; | 783 | goto err_out; |
889 | 784 | ||
diff --git a/drivers/s390/scsi/zfcp_dbf.h b/drivers/s390/scsi/zfcp_dbf.h index 2e823d4ede6..a3af6bd3d5a 100644 --- a/drivers/s390/scsi/zfcp_dbf.h +++ b/drivers/s390/scsi/zfcp_dbf.h | |||
@@ -108,6 +108,34 @@ struct zfcp_dbf_rec { | |||
108 | } u; | 108 | } u; |
109 | } __packed; | 109 | } __packed; |
110 | 110 | ||
111 | /** | ||
112 | * enum zfcp_dbf_san_id - SAN trace record identifier | ||
113 | * @ZFCP_DBF_SAN_REQ: request trace record id | ||
114 | * @ZFCP_DBF_SAN_RES: response trace record id | ||
115 | * @ZFCP_DBF_SAN_ELS: extended link service record id | ||
116 | */ | ||
117 | enum zfcp_dbf_san_id { | ||
118 | ZFCP_DBF_SAN_REQ = 1, | ||
119 | ZFCP_DBF_SAN_RES = 2, | ||
120 | ZFCP_DBF_SAN_ELS = 3, | ||
121 | }; | ||
122 | |||
123 | /** struct zfcp_dbf_san - trace record for SAN requests and responses | ||
124 | * @id: unique number of recovery record type | ||
125 | * @tag: identifier string specifying the location of initiation | ||
126 | * @fsf_req_id: request id for fsf requests | ||
127 | * @payload: unformatted information related to request/response | ||
128 | * @d_id: destination id | ||
129 | */ | ||
130 | struct zfcp_dbf_san { | ||
131 | u8 id; | ||
132 | char tag[ZFCP_DBF_TAG_LEN]; | ||
133 | u64 fsf_req_id; | ||
134 | u32 d_id; | ||
135 | #define ZFCP_DBF_SAN_MAX_PAYLOAD (FC_CT_HDR_LEN + 32) | ||
136 | char payload[ZFCP_DBF_SAN_MAX_PAYLOAD]; | ||
137 | } __packed; | ||
138 | |||
111 | struct zfcp_dbf_hba_record_response { | 139 | struct zfcp_dbf_hba_record_response { |
112 | u32 fsf_command; | 140 | u32 fsf_command; |
113 | u64 fsf_reqid; | 141 | u64 fsf_reqid; |
@@ -176,44 +204,6 @@ struct zfcp_dbf_hba_record { | |||
176 | } u; | 204 | } u; |
177 | } __attribute__ ((packed)); | 205 | } __attribute__ ((packed)); |
178 | 206 | ||
179 | struct zfcp_dbf_san_record_ct_request { | ||
180 | u16 cmd_req_code; | ||
181 | u8 revision; | ||
182 | u8 gs_type; | ||
183 | u8 gs_subtype; | ||
184 | u8 options; | ||
185 | u16 max_res_size; | ||
186 | u32 len; | ||
187 | u32 d_id; | ||
188 | } __attribute__ ((packed)); | ||
189 | |||
190 | struct zfcp_dbf_san_record_ct_response { | ||
191 | u16 cmd_rsp_code; | ||
192 | u8 revision; | ||
193 | u8 reason_code; | ||
194 | u8 expl; | ||
195 | u8 vendor_unique; | ||
196 | u16 max_res_size; | ||
197 | u32 len; | ||
198 | } __attribute__ ((packed)); | ||
199 | |||
200 | struct zfcp_dbf_san_record_els { | ||
201 | u32 d_id; | ||
202 | } __attribute__ ((packed)); | ||
203 | |||
204 | struct zfcp_dbf_san_record { | ||
205 | u8 tag[ZFCP_DBF_TAG_SIZE]; | ||
206 | u64 fsf_reqid; | ||
207 | u32 fsf_seqno; | ||
208 | union { | ||
209 | struct zfcp_dbf_san_record_ct_request ct_req; | ||
210 | struct zfcp_dbf_san_record_ct_response ct_resp; | ||
211 | struct zfcp_dbf_san_record_els els; | ||
212 | } u; | ||
213 | } __attribute__ ((packed)); | ||
214 | |||
215 | #define ZFCP_DBF_SAN_MAX_PAYLOAD 1024 | ||
216 | |||
217 | struct zfcp_dbf_scsi_record { | 207 | struct zfcp_dbf_scsi_record { |
218 | u8 tag[ZFCP_DBF_TAG_SIZE]; | 208 | u8 tag[ZFCP_DBF_TAG_SIZE]; |
219 | u8 tag2[ZFCP_DBF_TAG_SIZE]; | 209 | u8 tag2[ZFCP_DBF_TAG_SIZE]; |
@@ -250,7 +240,7 @@ struct zfcp_dbf { | |||
250 | spinlock_t scsi_lock; | 240 | spinlock_t scsi_lock; |
251 | struct zfcp_dbf_rec rec_buf; | 241 | struct zfcp_dbf_rec rec_buf; |
252 | struct zfcp_dbf_hba_record hba_buf; | 242 | struct zfcp_dbf_hba_record hba_buf; |
253 | struct zfcp_dbf_san_record san_buf; | 243 | struct zfcp_dbf_san san_buf; |
254 | struct zfcp_dbf_scsi_record scsi_buf; | 244 | struct zfcp_dbf_scsi_record scsi_buf; |
255 | struct zfcp_adapter *adapter; | 245 | struct zfcp_adapter *adapter; |
256 | }; | 246 | }; |
diff --git a/drivers/s390/scsi/zfcp_ext.h b/drivers/s390/scsi/zfcp_ext.h index 2d6ee75dfe3..ff7effe5537 100644 --- a/drivers/s390/scsi/zfcp_ext.h +++ b/drivers/s390/scsi/zfcp_ext.h | |||
@@ -55,11 +55,9 @@ extern void _zfcp_dbf_hba_fsf_unsol(const char *, int level, struct zfcp_dbf *, | |||
55 | struct fsf_status_read_buffer *); | 55 | struct fsf_status_read_buffer *); |
56 | extern void zfcp_dbf_hba_qdio(struct zfcp_dbf *, unsigned int, int, int); | 56 | extern void zfcp_dbf_hba_qdio(struct zfcp_dbf *, unsigned int, int, int); |
57 | extern void zfcp_dbf_hba_berr(struct zfcp_dbf *, struct zfcp_fsf_req *); | 57 | extern void zfcp_dbf_hba_berr(struct zfcp_dbf *, struct zfcp_fsf_req *); |
58 | extern void zfcp_dbf_san_ct_request(struct zfcp_fsf_req *, u32); | 58 | extern void zfcp_dbf_san_req(char *, struct zfcp_fsf_req *, u32); |
59 | extern void zfcp_dbf_san_ct_response(struct zfcp_fsf_req *); | 59 | extern void zfcp_dbf_san_res(char *, struct zfcp_fsf_req *); |
60 | extern void zfcp_dbf_san_els_request(struct zfcp_fsf_req *); | 60 | extern void zfcp_dbf_san_in_els(char *, struct zfcp_fsf_req *); |
61 | extern void zfcp_dbf_san_els_response(struct zfcp_fsf_req *); | ||
62 | extern void zfcp_dbf_san_incoming_els(struct zfcp_fsf_req *); | ||
63 | extern void _zfcp_dbf_scsi(const char *, const char *, int, struct zfcp_dbf *, | 61 | extern void _zfcp_dbf_scsi(const char *, const char *, int, struct zfcp_dbf *, |
64 | struct scsi_cmnd *, struct zfcp_fsf_req *, | 62 | struct scsi_cmnd *, struct zfcp_fsf_req *, |
65 | unsigned long); | 63 | unsigned long); |
diff --git a/drivers/s390/scsi/zfcp_fc.c b/drivers/s390/scsi/zfcp_fc.c index 86fd905df48..7d44d9c59bd 100644 --- a/drivers/s390/scsi/zfcp_fc.c +++ b/drivers/s390/scsi/zfcp_fc.c | |||
@@ -251,7 +251,7 @@ void zfcp_fc_incoming_els(struct zfcp_fsf_req *fsf_req) | |||
251 | (struct fsf_status_read_buffer *) fsf_req->data; | 251 | (struct fsf_status_read_buffer *) fsf_req->data; |
252 | unsigned int els_type = status_buffer->payload.data[0]; | 252 | unsigned int els_type = status_buffer->payload.data[0]; |
253 | 253 | ||
254 | zfcp_dbf_san_incoming_els(fsf_req); | 254 | zfcp_dbf_san_in_els("fciels1", fsf_req); |
255 | if (els_type == ELS_PLOGI) | 255 | if (els_type == ELS_PLOGI) |
256 | zfcp_fc_incoming_plogi(fsf_req); | 256 | zfcp_fc_incoming_plogi(fsf_req); |
257 | else if (els_type == ELS_LOGO) | 257 | else if (els_type == ELS_LOGO) |
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c index 2eb7dd56ab8..6d805c50627 100644 --- a/drivers/s390/scsi/zfcp_fsf.c +++ b/drivers/s390/scsi/zfcp_fsf.c | |||
@@ -882,7 +882,7 @@ static void zfcp_fsf_send_ct_handler(struct zfcp_fsf_req *req) | |||
882 | 882 | ||
883 | switch (header->fsf_status) { | 883 | switch (header->fsf_status) { |
884 | case FSF_GOOD: | 884 | case FSF_GOOD: |
885 | zfcp_dbf_san_ct_response(req); | 885 | zfcp_dbf_san_res("fsscth1", req); |
886 | ct->status = 0; | 886 | ct->status = 0; |
887 | break; | 887 | break; |
888 | case FSF_SERVICE_CLASS_NOT_SUPPORTED: | 888 | case FSF_SERVICE_CLASS_NOT_SUPPORTED: |
@@ -1025,7 +1025,7 @@ int zfcp_fsf_send_ct(struct zfcp_fc_wka_port *wka_port, | |||
1025 | req->qtcb->header.port_handle = wka_port->handle; | 1025 | req->qtcb->header.port_handle = wka_port->handle; |
1026 | req->data = ct; | 1026 | req->data = ct; |
1027 | 1027 | ||
1028 | zfcp_dbf_san_ct_request(req, wka_port->d_id); | 1028 | zfcp_dbf_san_req("fssct_1", req, wka_port->d_id); |
1029 | 1029 | ||
1030 | ret = zfcp_fsf_req_send(req); | 1030 | ret = zfcp_fsf_req_send(req); |
1031 | if (ret) | 1031 | if (ret) |
@@ -1053,7 +1053,7 @@ static void zfcp_fsf_send_els_handler(struct zfcp_fsf_req *req) | |||
1053 | 1053 | ||
1054 | switch (header->fsf_status) { | 1054 | switch (header->fsf_status) { |
1055 | case FSF_GOOD: | 1055 | case FSF_GOOD: |
1056 | zfcp_dbf_san_els_response(req); | 1056 | zfcp_dbf_san_res("fsselh1", req); |
1057 | send_els->status = 0; | 1057 | send_els->status = 0; |
1058 | break; | 1058 | break; |
1059 | case FSF_SERVICE_CLASS_NOT_SUPPORTED: | 1059 | case FSF_SERVICE_CLASS_NOT_SUPPORTED: |
@@ -1127,7 +1127,7 @@ int zfcp_fsf_send_els(struct zfcp_adapter *adapter, u32 d_id, | |||
1127 | req->handler = zfcp_fsf_send_els_handler; | 1127 | req->handler = zfcp_fsf_send_els_handler; |
1128 | req->data = els; | 1128 | req->data = els; |
1129 | 1129 | ||
1130 | zfcp_dbf_san_els_request(req); | 1130 | zfcp_dbf_san_req("fssels1", req, d_id); |
1131 | 1131 | ||
1132 | ret = zfcp_fsf_req_send(req); | 1132 | ret = zfcp_fsf_req_send(req); |
1133 | if (ret) | 1133 | if (ret) |