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 675503628cc9..6ece47e5148c 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 2e823d4ede6e..a3af6bd3d5aa 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 2d6ee75dfe34..ff7effe55379 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 86fd905df48b..7d44d9c59bdc 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 2eb7dd56ab80..6d805c50627f 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) |
