static int zfcp_hba_dbf_view_format(debug_info_t * id, struct debug_view *view, char *out_buf, const char *in_buf) { struct zfcp_hba_dbf_record *rec = (struct zfcp_hba_dbf_record *)in_buf; int len = 0; if (strncmp(rec->tag, "dump", ZFCP_DBF_TAG_SIZE) == 0) return 0; len += zfcp_dbf_tag(out_buf + len, "tag", rec->tag); if (isalpha(rec->tag2[0])) len += zfcp_dbf_tag(out_buf + len, "tag2", rec->tag2); if (strncmp(rec->tag, "resp", ZFCP_DBF_TAG_SIZE) == 0) len += zfcp_hba_dbf_view_response(out_buf + len, &rec->type.response); else if (strncmp(rec->tag, "stat", ZFCP_DBF_TAG_SIZE) == 0) len += zfcp_hba_dbf_view_status(out_buf + len, &rec->type.status); else if (strncmp(rec->tag, "qdio", ZFCP_DBF_TAG_SIZE) == 0) len += zfcp_hba_dbf_view_qdio(out_buf + len, &rec->type.qdio); len += sprintf(out_buf + len, "\n"); return len; }
static int zfcp_hba_dbf_view_format(debug_info_t *id, struct debug_view *view, char *out_buf, const char *in_buf) { struct zfcp_hba_dbf_record *r = (struct zfcp_hba_dbf_record *)in_buf; char *p = out_buf; if (strncmp(r->tag, "dump", ZFCP_DBF_TAG_SIZE) == 0) return 0; zfcp_dbf_tag(&p, "tag", r->tag); if (isalpha(r->tag2[0])) zfcp_dbf_tag(&p, "tag2", r->tag2); if (strncmp(r->tag, "resp", ZFCP_DBF_TAG_SIZE) == 0) zfcp_hba_dbf_view_response(&p, &r->u.response); else if (strncmp(r->tag, "stat", ZFCP_DBF_TAG_SIZE) == 0) zfcp_hba_dbf_view_status(&p, &r->u.status); else if (strncmp(r->tag, "qdio", ZFCP_DBF_TAG_SIZE) == 0) zfcp_hba_dbf_view_qdio(&p, &r->u.qdio); else if (strncmp(r->tag, "berr", ZFCP_DBF_TAG_SIZE) == 0) zfcp_hba_dbf_view_berr(&p, &r->u.berr); if (strncmp(r->tag, "resp", ZFCP_DBF_TAG_SIZE) != 0) p += sprintf(p, "\n"); return p - out_buf; }
static int zfcp_scsi_dbf_view_format(debug_info_t *id, struct debug_view *view, char *out_buf, const char *in_buf) { struct zfcp_scsi_dbf_record *r = (struct zfcp_scsi_dbf_record *)in_buf; struct timespec t; char *p = out_buf; if (strncmp(r->tag, "dump", ZFCP_DBF_TAG_SIZE) == 0) return 0; zfcp_dbf_tag(&p, "tag", r->tag); zfcp_dbf_tag(&p, "tag2", r->tag2); zfcp_dbf_out(&p, "scsi_id", "0x%08x", r->scsi_id); zfcp_dbf_out(&p, "scsi_lun", "0x%08x", r->scsi_lun); zfcp_dbf_out(&p, "scsi_result", "0x%08x", r->scsi_result); zfcp_dbf_out(&p, "scsi_cmnd", "0x%0Lx", r->scsi_cmnd); zfcp_dbf_out(&p, "scsi_serial", "0x%016Lx", r->scsi_serial); zfcp_dbf_outd(&p, "scsi_opcode", r->scsi_opcode, ZFCP_DBF_SCSI_OPCODE, 0, ZFCP_DBF_SCSI_OPCODE); zfcp_dbf_out(&p, "scsi_retries", "0x%02x", r->scsi_retries); zfcp_dbf_out(&p, "scsi_allowed", "0x%02x", r->scsi_allowed); if (strncmp(r->tag, "abrt", ZFCP_DBF_TAG_SIZE) == 0) zfcp_dbf_out(&p, "old_fsf_reqid", "0x%0Lx", r->old_fsf_reqid); zfcp_dbf_out(&p, "fsf_reqid", "0x%0Lx", r->fsf_reqid); zfcp_dbf_out(&p, "fsf_seqno", "0x%08x", r->fsf_seqno); zfcp_dbf_timestamp(r->fsf_issued, &t); zfcp_dbf_out(&p, "fsf_issued", "%011lu:%06lu", t.tv_sec, t.tv_nsec); if (strncmp(r->tag, "rslt", ZFCP_DBF_TAG_SIZE) == 0) { zfcp_dbf_out(&p, "fcp_rsp_validity", "0x%02x", r->rsp_validity); zfcp_dbf_out(&p, "fcp_rsp_scsi_status", "0x%02x", r->rsp_scsi_status); zfcp_dbf_out(&p, "fcp_rsp_resid", "0x%08x", r->rsp_resid); zfcp_dbf_out(&p, "fcp_rsp_code", "0x%08x", r->rsp_code); zfcp_dbf_out(&p, "fcp_sns_info_len", "0x%08x", r->sns_info_len); zfcp_dbf_outd(&p, "fcp_sns_info", r->sns_info, min((int)r->sns_info_len, ZFCP_DBF_SCSI_FCP_SNS_INFO), 0, r->sns_info_len); } p += sprintf(p, "\n"); return p - out_buf; }
static int zfcp_san_dbf_view_format(debug_info_t *id, struct debug_view *view, char *out_buf, const char *in_buf) { struct zfcp_san_dbf_record *r = (struct zfcp_san_dbf_record *)in_buf; char *buffer = NULL; int buflen = 0, total = 0; char *p = out_buf; if (strncmp(r->tag, "dump", ZFCP_DBF_TAG_SIZE) == 0) return 0; zfcp_dbf_tag(&p, "tag", r->tag); zfcp_dbf_out(&p, "fsf_reqid", "0x%0Lx", r->fsf_reqid); zfcp_dbf_out(&p, "fsf_seqno", "0x%08x", r->fsf_seqno); zfcp_dbf_out(&p, "s_id", "0x%06x", r->s_id); zfcp_dbf_out(&p, "d_id", "0x%06x", r->d_id); if (strncmp(r->tag, "octc", ZFCP_DBF_TAG_SIZE) == 0) { struct zfcp_san_dbf_record_ct_request *ct = &r->u.ct_req; zfcp_dbf_out(&p, "cmd_req_code", "0x%04x", ct->cmd_req_code); zfcp_dbf_out(&p, "revision", "0x%02x", ct->revision); zfcp_dbf_out(&p, "gs_type", "0x%02x", ct->gs_type); zfcp_dbf_out(&p, "gs_subtype", "0x%02x", ct->gs_subtype); zfcp_dbf_out(&p, "options", "0x%02x", ct->options); zfcp_dbf_out(&p, "max_res_size", "0x%04x", ct->max_res_size); total = ct->len; buffer = ct->payload; buflen = min(total, ZFCP_DBF_CT_PAYLOAD); } else if (strncmp(r->tag, "rctc", ZFCP_DBF_TAG_SIZE) == 0) { struct zfcp_san_dbf_record_ct_response *ct = &r->u.ct_resp; zfcp_dbf_out(&p, "cmd_rsp_code", "0x%04x", ct->cmd_rsp_code); zfcp_dbf_out(&p, "revision", "0x%02x", ct->revision); zfcp_dbf_out(&p, "reason_code", "0x%02x", ct->reason_code); zfcp_dbf_out(&p, "reason_code_expl", "0x%02x", ct->expl); zfcp_dbf_out(&p, "vendor_unique", "0x%02x", ct->vendor_unique); total = ct->len; buffer = ct->payload; buflen = min(total, ZFCP_DBF_CT_PAYLOAD); } else if (strncmp(r->tag, "oels", ZFCP_DBF_TAG_SIZE) == 0 || strncmp(r->tag, "rels", ZFCP_DBF_TAG_SIZE) == 0 || strncmp(r->tag, "iels", ZFCP_DBF_TAG_SIZE) == 0) { struct zfcp_san_dbf_record_els *els = &r->u.els; zfcp_dbf_out(&p, "ls_code", "0x%02x", els->ls_code); total = els->len; buffer = els->payload; buflen = min(total, ZFCP_DBF_ELS_PAYLOAD); } zfcp_dbf_outd(&p, "payload", buffer, buflen, 0, total); if (buflen == total) p += sprintf(p, "\n"); return p - out_buf; }
static int zfcp_san_dbf_view_format(debug_info_t *id, struct debug_view *view, char *out_buf, const char *in_buf) { struct zfcp_san_dbf_record *r = (struct zfcp_san_dbf_record *)in_buf; char *p = out_buf; if (strncmp(r->tag, "dump", ZFCP_DBF_TAG_SIZE) == 0) return 0; zfcp_dbf_tag(&p, "tag", r->tag); zfcp_dbf_out(&p, "fsf_reqid", "0x%0Lx", r->fsf_reqid); zfcp_dbf_out(&p, "fsf_seqno", "0x%08x", r->fsf_seqno); zfcp_dbf_out(&p, "s_id", "0x%06x", r->s_id); zfcp_dbf_out(&p, "d_id", "0x%06x", r->d_id); if (strncmp(r->tag, "octc", ZFCP_DBF_TAG_SIZE) == 0) { struct zfcp_san_dbf_record_ct_request *ct = &r->u.ct_req; zfcp_dbf_out(&p, "cmd_req_code", "0x%04x", ct->cmd_req_code); zfcp_dbf_out(&p, "revision", "0x%02x", ct->revision); zfcp_dbf_out(&p, "gs_type", "0x%02x", ct->gs_type); zfcp_dbf_out(&p, "gs_subtype", "0x%02x", ct->gs_subtype); zfcp_dbf_out(&p, "options", "0x%02x", ct->options); zfcp_dbf_out(&p, "max_res_size", "0x%04x", ct->max_res_size); } else if (strncmp(r->tag, "rctc", ZFCP_DBF_TAG_SIZE) == 0) { struct zfcp_san_dbf_record_ct_response *ct = &r->u.ct_resp; zfcp_dbf_out(&p, "cmd_rsp_code", "0x%04x", ct->cmd_rsp_code); zfcp_dbf_out(&p, "revision", "0x%02x", ct->revision); zfcp_dbf_out(&p, "reason_code", "0x%02x", ct->reason_code); zfcp_dbf_out(&p, "reason_code_expl", "0x%02x", ct->expl); zfcp_dbf_out(&p, "vendor_unique", "0x%02x", ct->vendor_unique); zfcp_dbf_out(&p, "max_res_size", "0x%04x", ct->max_res_size); } else if (strncmp(r->tag, "oels", ZFCP_DBF_TAG_SIZE) == 0 || strncmp(r->tag, "rels", ZFCP_DBF_TAG_SIZE) == 0 || strncmp(r->tag, "iels", ZFCP_DBF_TAG_SIZE) == 0) { struct zfcp_san_dbf_record_els *els = &r->u.els; zfcp_dbf_out(&p, "ls_code", "0x%02x", els->ls_code); } return p - out_buf; }
static int zfcp_scsi_dbf_view_format(debug_info_t * id, struct debug_view *view, char *out_buf, const char *in_buf) { struct zfcp_scsi_dbf_record *rec = (struct zfcp_scsi_dbf_record *)in_buf; int len = 0; if (strncmp(rec->tag, "dump", ZFCP_DBF_TAG_SIZE) == 0) return 0; len += zfcp_dbf_tag(out_buf + len, "tag", rec->tag); len += zfcp_dbf_tag(out_buf + len, "tag2", rec->tag2); len += zfcp_dbf_view(out_buf + len, "scsi_id", "0x%08x", rec->scsi_id); len += zfcp_dbf_view(out_buf + len, "scsi_lun", "0x%08x", rec->scsi_lun); len += zfcp_dbf_view(out_buf + len, "scsi_result", "0x%08x", rec->scsi_result); len += zfcp_dbf_view(out_buf + len, "scsi_cmnd", "0x%0Lx", rec->scsi_cmnd); len += zfcp_dbf_view(out_buf + len, "scsi_serial", "0x%016Lx", rec->scsi_serial); len += zfcp_dbf_view_dump(out_buf + len, "scsi_opcode", rec->scsi_opcode, ZFCP_DBF_SCSI_OPCODE, 0, ZFCP_DBF_SCSI_OPCODE); len += zfcp_dbf_view(out_buf + len, "scsi_retries", "0x%02x", rec->scsi_retries); len += zfcp_dbf_view(out_buf + len, "scsi_allowed", "0x%02x", rec->scsi_allowed); if (strncmp(rec->tag, "abrt", ZFCP_DBF_TAG_SIZE) == 0) { len += zfcp_dbf_view(out_buf + len, "old_fsf_reqid", "0x%0Lx", rec->type.old_fsf_reqid); } len += zfcp_dbf_view(out_buf + len, "fsf_reqid", "0x%0Lx", rec->fsf_reqid); len += zfcp_dbf_view(out_buf + len, "fsf_seqno", "0x%08x", rec->fsf_seqno); len += zfcp_dbf_stck(out_buf + len, "fsf_issued", rec->fsf_issued); if (strncmp(rec->tag, "rslt", ZFCP_DBF_TAG_SIZE) == 0) { len += zfcp_dbf_view(out_buf + len, "fcp_rsp_validity", "0x%02x", rec->type.fcp.rsp_validity); len += zfcp_dbf_view(out_buf + len, "fcp_rsp_scsi_status", "0x%02x", rec->type.fcp.rsp_scsi_status); len += zfcp_dbf_view(out_buf + len, "fcp_rsp_resid", "0x%08x", rec->type.fcp.rsp_resid); len += zfcp_dbf_view(out_buf + len, "fcp_rsp_code", "0x%08x", rec->type.fcp.rsp_code); len += zfcp_dbf_view(out_buf + len, "fcp_sns_info_len", "0x%08x", rec->type.fcp.sns_info_len); len += zfcp_dbf_view_dump(out_buf + len, "fcp_sns_info", rec->type.fcp.sns_info, min((int)rec->type.fcp.sns_info_len, ZFCP_DBF_SCSI_FCP_SNS_INFO), 0, rec->type.fcp.sns_info_len); } len += sprintf(out_buf + len, "\n"); return len; }
static int zfcp_san_dbf_view_format(debug_info_t * id, struct debug_view *view, char *out_buf, const char *in_buf) { struct zfcp_san_dbf_record *rec = (struct zfcp_san_dbf_record *)in_buf; char *buffer = NULL; int buflen = 0, total = 0; int len = 0; if (strncmp(rec->tag, "dump", ZFCP_DBF_TAG_SIZE) == 0) return 0; len += zfcp_dbf_tag(out_buf + len, "tag", rec->tag); len += zfcp_dbf_view(out_buf + len, "fsf_reqid", "0x%0Lx", rec->fsf_reqid); len += zfcp_dbf_view(out_buf + len, "fsf_seqno", "0x%08x", rec->fsf_seqno); len += zfcp_dbf_view(out_buf + len, "s_id", "0x%06x", rec->s_id); len += zfcp_dbf_view(out_buf + len, "d_id", "0x%06x", rec->d_id); if (strncmp(rec->tag, "octc", ZFCP_DBF_TAG_SIZE) == 0) { len += zfcp_dbf_view(out_buf + len, "cmd_req_code", "0x%04x", rec->type.ct.type.request.cmd_req_code); len += zfcp_dbf_view(out_buf + len, "revision", "0x%02x", rec->type.ct.type.request.revision); len += zfcp_dbf_view(out_buf + len, "gs_type", "0x%02x", rec->type.ct.type.request.gs_type); len += zfcp_dbf_view(out_buf + len, "gs_subtype", "0x%02x", rec->type.ct.type.request.gs_subtype); len += zfcp_dbf_view(out_buf + len, "options", "0x%02x", rec->type.ct.type.request.options); len += zfcp_dbf_view(out_buf + len, "max_res_size", "0x%04x", rec->type.ct.type.request.max_res_size); total = rec->type.ct.payload_size; buffer = rec->type.ct.payload; buflen = min(total, ZFCP_DBF_CT_PAYLOAD); } else if (strncmp(rec->tag, "rctc", ZFCP_DBF_TAG_SIZE) == 0) { len += zfcp_dbf_view(out_buf + len, "cmd_rsp_code", "0x%04x", rec->type.ct.type.response.cmd_rsp_code); len += zfcp_dbf_view(out_buf + len, "revision", "0x%02x", rec->type.ct.type.response.revision); len += zfcp_dbf_view(out_buf + len, "reason_code", "0x%02x", rec->type.ct.type.response.reason_code); len += zfcp_dbf_view(out_buf + len, "reason_code_expl", "0x%02x", rec->type.ct.type.response.reason_code_expl); len += zfcp_dbf_view(out_buf + len, "vendor_unique", "0x%02x", rec->type.ct.type.response.vendor_unique); total = rec->type.ct.payload_size; buffer = rec->type.ct.payload; buflen = min(total, ZFCP_DBF_CT_PAYLOAD); } else if (strncmp(rec->tag, "oels", ZFCP_DBF_TAG_SIZE) == 0 || strncmp(rec->tag, "rels", ZFCP_DBF_TAG_SIZE) == 0 || strncmp(rec->tag, "iels", ZFCP_DBF_TAG_SIZE) == 0) { len += zfcp_dbf_view(out_buf + len, "ls_code", "0x%02x", rec->type.els.ls_code); total = rec->type.els.payload_size; buffer = rec->type.els.payload; buflen = min(total, ZFCP_DBF_ELS_PAYLOAD); } len += zfcp_dbf_view_dump(out_buf + len, "payload", buffer, buflen, 0, total); if (buflen == total) len += sprintf(out_buf + len, "\n"); return len; }