diff options
Diffstat (limited to 'drivers/s390/scsi/zfcp_dbf.c')
-rw-r--r-- | drivers/s390/scsi/zfcp_dbf.c | 123 |
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 | ||
113 | static int | 113 | static int zfcp_dbf_view_header(debug_info_t *id, struct debug_view *view, |
114 | zfcp_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 | ||
251 | void | 250 | void zfcp_hba_dbf_event_fsf_unsol(const char *tag, struct zfcp_adapter *adapter, |
252 | zfcp_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 | ||
304 | void | 302 | void zfcp_hba_dbf_event_qdio(struct zfcp_adapter *adapter, unsigned int status, |
305 | zfcp_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 | ||
875 | static void | 872 | static 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 | ||
910 | void zfcp_san_dbf_event_els_response(struct zfcp_fsf_req *fsf_req) | 905 | void 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 | ||
921 | void zfcp_san_dbf_event_incoming_els(struct zfcp_fsf_req *fsf_req) | 916 | void 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 | ||
935 | static int | 930 | static int zfcp_san_dbf_view_format(debug_info_t *id, struct debug_view *view, |
936 | zfcp_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 | ||
1000 | static void | 994 | static 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 | ||
1079 | void | 1072 | void zfcp_scsi_dbf_event_result(const char *tag, int level, |
1080 | zfcp_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 | ||
1089 | void | 1080 | void zfcp_scsi_dbf_event_abort(const char *tag, struct zfcp_adapter *adapter, |
1090 | zfcp_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 | ||
1099 | void | 1089 | void zfcp_scsi_dbf_event_devreset(const char *tag, u8 flag, |
1100 | zfcp_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 | ||
1109 | static int | 1097 | static int zfcp_scsi_dbf_view_format(debug_info_t *id, struct debug_view *view, |
1110 | zfcp_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; |