aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/scsi/zfcp_dbf.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/scsi/zfcp_dbf.c')
-rw-r--r--drivers/s390/scsi/zfcp_dbf.c123
1 files changed, 55 insertions, 68 deletions
diff --git a/drivers/s390/scsi/zfcp_dbf.c b/drivers/s390/scsi/zfcp_dbf.c
index a39a3e33a5b6..7e85e87b0ede 100644
--- a/drivers/s390/scsi/zfcp_dbf.c
+++ b/drivers/s390/scsi/zfcp_dbf.c
@@ -110,9 +110,8 @@ static void zfcp_dbf_outd(char **p, const char *label, char *buffer,
110 *p += sprintf(*p, "\n"); 110 *p += sprintf(*p, "\n");
111} 111}
112 112
113static int 113static int zfcp_dbf_view_header(debug_info_t *id, struct debug_view *view,
114zfcp_dbf_view_header(debug_info_t * id, struct debug_view *view, int area, 114 int area, debug_entry_t *entry, char *out_buf)
115 debug_entry_t * entry, char *out_buf)
116{ 115{
117 struct zfcp_dbf_dump *dump = (struct zfcp_dbf_dump *)DEBUG_DATA(entry); 116 struct zfcp_dbf_dump *dump = (struct zfcp_dbf_dump *)DEBUG_DATA(entry);
118 struct timespec t; 117 struct timespec t;
@@ -137,7 +136,7 @@ void zfcp_hba_dbf_event_fsf_response(struct zfcp_fsf_req *fsf_req)
137 struct zfcp_adapter *adapter = fsf_req->adapter; 136 struct zfcp_adapter *adapter = fsf_req->adapter;
138 struct fsf_qtcb *qtcb = fsf_req->qtcb; 137 struct fsf_qtcb *qtcb = fsf_req->qtcb;
139 union fsf_prot_status_qual *prot_status_qual = 138 union fsf_prot_status_qual *prot_status_qual =
140 &qtcb->prefix.prot_status_qual; 139 &qtcb->prefix.prot_status_qual;
141 union fsf_status_qual *fsf_status_qual = &qtcb->header.fsf_status_qual; 140 union fsf_status_qual *fsf_status_qual = &qtcb->header.fsf_status_qual;
142 struct scsi_cmnd *scsi_cmnd; 141 struct scsi_cmnd *scsi_cmnd;
143 struct zfcp_port *port; 142 struct zfcp_port *port;
@@ -248,9 +247,8 @@ void zfcp_hba_dbf_event_fsf_response(struct zfcp_fsf_req *fsf_req)
248 spin_unlock_irqrestore(&adapter->hba_dbf_lock, flags); 247 spin_unlock_irqrestore(&adapter->hba_dbf_lock, flags);
249} 248}
250 249
251void 250void zfcp_hba_dbf_event_fsf_unsol(const char *tag, struct zfcp_adapter *adapter,
252zfcp_hba_dbf_event_fsf_unsol(const char *tag, struct zfcp_adapter *adapter, 251 struct fsf_status_read_buffer *status_buffer)
253 struct fsf_status_read_buffer *status_buffer)
254{ 252{
255 struct zfcp_hba_dbf_record *rec = &adapter->hba_dbf_buf; 253 struct zfcp_hba_dbf_record *rec = &adapter->hba_dbf_buf;
256 unsigned long flags; 254 unsigned long flags;
@@ -301,10 +299,9 @@ zfcp_hba_dbf_event_fsf_unsol(const char *tag, struct zfcp_adapter *adapter,
301 spin_unlock_irqrestore(&adapter->hba_dbf_lock, flags); 299 spin_unlock_irqrestore(&adapter->hba_dbf_lock, flags);
302} 300}
303 301
304void 302void zfcp_hba_dbf_event_qdio(struct zfcp_adapter *adapter, unsigned int status,
305zfcp_hba_dbf_event_qdio(struct zfcp_adapter *adapter, unsigned int status, 303 unsigned int qdio_error, unsigned int siga_error,
306 unsigned int qdio_error, unsigned int siga_error, 304 int sbal_index, int sbal_count)
307 int sbal_index, int sbal_count)
308{ 305{
309 struct zfcp_hba_dbf_record *r = &adapter->hba_dbf_buf; 306 struct zfcp_hba_dbf_record *r = &adapter->hba_dbf_buf;
310 unsigned long flags; 307 unsigned long flags;
@@ -872,10 +869,10 @@ void zfcp_san_dbf_event_ct_response(struct zfcp_fsf_req *fsf_req)
872 spin_unlock_irqrestore(&adapter->san_dbf_lock, flags); 869 spin_unlock_irqrestore(&adapter->san_dbf_lock, flags);
873} 870}
874 871
875static void 872static void zfcp_san_dbf_event_els(const char *tag, int level,
876_zfcp_san_dbf_event_common_els(const char *tag, int level, 873 struct zfcp_fsf_req *fsf_req, u32 s_id,
877 struct zfcp_fsf_req *fsf_req, u32 s_id, 874 u32 d_id, u8 ls_code, void *buffer,
878 u32 d_id, u8 ls_code, void *buffer, int buflen) 875 int buflen)
879{ 876{
880 struct zfcp_adapter *adapter = fsf_req->adapter; 877 struct zfcp_adapter *adapter = fsf_req->adapter;
881 struct zfcp_san_dbf_record *rec = &adapter->san_dbf_buf; 878 struct zfcp_san_dbf_record *rec = &adapter->san_dbf_buf;
@@ -899,42 +896,39 @@ void zfcp_san_dbf_event_els_request(struct zfcp_fsf_req *fsf_req)
899{ 896{
900 struct zfcp_send_els *els = (struct zfcp_send_els *)fsf_req->data; 897 struct zfcp_send_els *els = (struct zfcp_send_els *)fsf_req->data;
901 898
902 _zfcp_san_dbf_event_common_els("oels", 2, fsf_req, 899 zfcp_san_dbf_event_els("oels", 2, fsf_req,
903 fc_host_port_id(els->adapter->scsi_host), 900 fc_host_port_id(els->adapter->scsi_host),
904 els->d_id, 901 els->d_id, *(u8 *) zfcp_sg_to_address(els->req),
905 *(u8 *) zfcp_sg_to_address(els->req), 902 zfcp_sg_to_address(els->req), els->req->length);
906 zfcp_sg_to_address(els->req),
907 els->req->length);
908} 903}
909 904
910void zfcp_san_dbf_event_els_response(struct zfcp_fsf_req *fsf_req) 905void zfcp_san_dbf_event_els_response(struct zfcp_fsf_req *fsf_req)
911{ 906{
912 struct zfcp_send_els *els = (struct zfcp_send_els *)fsf_req->data; 907 struct zfcp_send_els *els = (struct zfcp_send_els *)fsf_req->data;
913 908
914 _zfcp_san_dbf_event_common_els("rels", 2, fsf_req, els->d_id, 909 zfcp_san_dbf_event_els("rels", 2, fsf_req, els->d_id,
915 fc_host_port_id(els->adapter->scsi_host), 910 fc_host_port_id(els->adapter->scsi_host),
916 *(u8 *) zfcp_sg_to_address(els->req), 911 *(u8 *)zfcp_sg_to_address(els->req),
917 zfcp_sg_to_address(els->resp), 912 zfcp_sg_to_address(els->resp),
918 els->resp->length); 913 els->resp->length);
919} 914}
920 915
921void zfcp_san_dbf_event_incoming_els(struct zfcp_fsf_req *fsf_req) 916void zfcp_san_dbf_event_incoming_els(struct zfcp_fsf_req *fsf_req)
922{ 917{
923 struct zfcp_adapter *adapter = fsf_req->adapter; 918 struct zfcp_adapter *adapter = fsf_req->adapter;
924 struct fsf_status_read_buffer *status_buffer = 919 struct fsf_status_read_buffer *buf =
925 (struct fsf_status_read_buffer *)fsf_req->data; 920 (struct fsf_status_read_buffer *)fsf_req->data;
926 int length = (int)status_buffer->length - 921 int length = (int)buf->length -
927 (int)((void *)&status_buffer->payload - (void *)status_buffer); 922 (int)((void *)&buf->payload - (void *)buf);
928 923
929 _zfcp_san_dbf_event_common_els("iels", 1, fsf_req, status_buffer->d_id, 924 zfcp_san_dbf_event_els("iels", 1, fsf_req, buf->d_id,
930 fc_host_port_id(adapter->scsi_host), 925 fc_host_port_id(adapter->scsi_host),
931 *(u8 *) status_buffer->payload, 926 *(u8 *)buf->payload, (void *)buf->payload,
932 (void *)status_buffer->payload, length); 927 length);
933} 928}
934 929
935static int 930static int zfcp_san_dbf_view_format(debug_info_t *id, struct debug_view *view,
936zfcp_san_dbf_view_format(debug_info_t * id, struct debug_view *view, 931 char *out_buf, const char *in_buf)
937 char *out_buf, const char *in_buf)
938{ 932{
939 struct zfcp_san_dbf_record *r = (struct zfcp_san_dbf_record *)in_buf; 933 struct zfcp_san_dbf_record *r = (struct zfcp_san_dbf_record *)in_buf;
940 char *buffer = NULL; 934 char *buffer = NULL;
@@ -997,12 +991,11 @@ static struct debug_view zfcp_san_dbf_view = {
997 NULL 991 NULL
998}; 992};
999 993
1000static void 994static void zfcp_scsi_dbf_event(const char *tag, const char *tag2, int level,
1001_zfcp_scsi_dbf_event_common(const char *tag, const char *tag2, int level, 995 struct zfcp_adapter *adapter,
1002 struct zfcp_adapter *adapter, 996 struct scsi_cmnd *scsi_cmnd,
1003 struct scsi_cmnd *scsi_cmnd, 997 struct zfcp_fsf_req *fsf_req,
1004 struct zfcp_fsf_req *fsf_req, 998 unsigned long old_req_id)
1005 unsigned long old_req_id)
1006{ 999{
1007 struct zfcp_scsi_dbf_record *rec = &adapter->scsi_dbf_buf; 1000 struct zfcp_scsi_dbf_record *rec = &adapter->scsi_dbf_buf;
1008 struct zfcp_dbf_dump *dump = (struct zfcp_dbf_dump *)rec; 1001 struct zfcp_dbf_dump *dump = (struct zfcp_dbf_dump *)rec;
@@ -1076,39 +1069,33 @@ _zfcp_scsi_dbf_event_common(const char *tag, const char *tag2, int level,
1076 spin_unlock_irqrestore(&adapter->scsi_dbf_lock, flags); 1069 spin_unlock_irqrestore(&adapter->scsi_dbf_lock, flags);
1077} 1070}
1078 1071
1079void 1072void zfcp_scsi_dbf_event_result(const char *tag, int level,
1080zfcp_scsi_dbf_event_result(const char *tag, int level, 1073 struct zfcp_adapter *adapter,
1081 struct zfcp_adapter *adapter, 1074 struct scsi_cmnd *scsi_cmnd,
1082 struct scsi_cmnd *scsi_cmnd, 1075 struct zfcp_fsf_req *fsf_req)
1083 struct zfcp_fsf_req *fsf_req)
1084{ 1076{
1085 _zfcp_scsi_dbf_event_common("rslt", tag, level, 1077 zfcp_scsi_dbf_event("rslt", tag, level, adapter, scsi_cmnd, fsf_req, 0);
1086 adapter, scsi_cmnd, fsf_req, 0);
1087} 1078}
1088 1079
1089void 1080void zfcp_scsi_dbf_event_abort(const char *tag, struct zfcp_adapter *adapter,
1090zfcp_scsi_dbf_event_abort(const char *tag, struct zfcp_adapter *adapter, 1081 struct scsi_cmnd *scsi_cmnd,
1091 struct scsi_cmnd *scsi_cmnd, 1082 struct zfcp_fsf_req *new_fsf_req,
1092 struct zfcp_fsf_req *new_fsf_req, 1083 unsigned long old_req_id)
1093 unsigned long old_req_id)
1094{ 1084{
1095 _zfcp_scsi_dbf_event_common("abrt", tag, 1, 1085 zfcp_scsi_dbf_event("abrt", tag, 1, adapter, scsi_cmnd, new_fsf_req,
1096 adapter, scsi_cmnd, new_fsf_req, old_req_id); 1086 old_req_id);
1097} 1087}
1098 1088
1099void 1089void zfcp_scsi_dbf_event_devreset(const char *tag, u8 flag,
1100zfcp_scsi_dbf_event_devreset(const char *tag, u8 flag, struct zfcp_unit *unit, 1090 struct zfcp_unit *unit,
1101 struct scsi_cmnd *scsi_cmnd) 1091 struct scsi_cmnd *scsi_cmnd)
1102{ 1092{
1103 struct zfcp_adapter *adapter = unit->port->adapter; 1093 zfcp_scsi_dbf_event(flag == FCP_TARGET_RESET ? "trst" : "lrst", tag, 1,
1104 1094 unit->port->adapter, scsi_cmnd, NULL, 0);
1105 _zfcp_scsi_dbf_event_common(flag == FCP_TARGET_RESET ? "trst" : "lrst",
1106 tag, 1, adapter, scsi_cmnd, NULL, 0);
1107} 1095}
1108 1096
1109static int 1097static int zfcp_scsi_dbf_view_format(debug_info_t *id, struct debug_view *view,
1110zfcp_scsi_dbf_view_format(debug_info_t * id, struct debug_view *view, 1098 char *out_buf, const char *in_buf)
1111 char *out_buf, const char *in_buf)
1112{ 1099{
1113 struct zfcp_scsi_dbf_record *r = (struct zfcp_scsi_dbf_record *)in_buf; 1100 struct zfcp_scsi_dbf_record *r = (struct zfcp_scsi_dbf_record *)in_buf;
1114 struct timespec t; 1101 struct timespec t;