diff options
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/scsi/zfcp_dbf.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/drivers/s390/scsi/zfcp_dbf.c b/drivers/s390/scsi/zfcp_dbf.c index 7e85e87b0ede..85ba4cc4190e 100644 --- a/drivers/s390/scsi/zfcp_dbf.c +++ b/drivers/s390/scsi/zfcp_dbf.c | |||
@@ -131,6 +131,10 @@ static int zfcp_dbf_view_header(debug_info_t *id, struct debug_view *view, | |||
131 | return p - out_buf; | 131 | return p - out_buf; |
132 | } | 132 | } |
133 | 133 | ||
134 | /** | ||
135 | * zfcp_hba_dbf_event_fsf_response - trace event for request completion | ||
136 | * @fsf_req: request that has been completed | ||
137 | */ | ||
134 | void zfcp_hba_dbf_event_fsf_response(struct zfcp_fsf_req *fsf_req) | 138 | void zfcp_hba_dbf_event_fsf_response(struct zfcp_fsf_req *fsf_req) |
135 | { | 139 | { |
136 | struct zfcp_adapter *adapter = fsf_req->adapter; | 140 | struct zfcp_adapter *adapter = fsf_req->adapter; |
@@ -247,6 +251,12 @@ void zfcp_hba_dbf_event_fsf_response(struct zfcp_fsf_req *fsf_req) | |||
247 | spin_unlock_irqrestore(&adapter->hba_dbf_lock, flags); | 251 | spin_unlock_irqrestore(&adapter->hba_dbf_lock, flags); |
248 | } | 252 | } |
249 | 253 | ||
254 | /** | ||
255 | * zfcp_hba_dbf_event_fsf_unsol - trace event for an unsolicited status buffer | ||
256 | * @tag: tag indicating which kind of unsolicited status has been received | ||
257 | * @adapter: adapter that has issued the unsolicited status buffer | ||
258 | * @status_buffer: buffer containing payload of unsolicited status | ||
259 | */ | ||
250 | void zfcp_hba_dbf_event_fsf_unsol(const char *tag, struct zfcp_adapter *adapter, | 260 | void zfcp_hba_dbf_event_fsf_unsol(const char *tag, struct zfcp_adapter *adapter, |
251 | struct fsf_status_read_buffer *status_buffer) | 261 | struct fsf_status_read_buffer *status_buffer) |
252 | { | 262 | { |
@@ -299,6 +309,15 @@ void zfcp_hba_dbf_event_fsf_unsol(const char *tag, struct zfcp_adapter *adapter, | |||
299 | spin_unlock_irqrestore(&adapter->hba_dbf_lock, flags); | 309 | spin_unlock_irqrestore(&adapter->hba_dbf_lock, flags); |
300 | } | 310 | } |
301 | 311 | ||
312 | /** | ||
313 | * zfcp_hba_dbf_event_qdio - trace event for QDIO related failure | ||
314 | * @adapter: adapter affected by this QDIO related event | ||
315 | * @status: as passed by qdio module | ||
316 | * @qdio_error: as passed by qdio module | ||
317 | * @siga_error: as passed by qdio module | ||
318 | * @sbal_index: first buffer with error condition, as passed by qdio module | ||
319 | * @sbal_count: number of buffers affected, as passed by qdio module | ||
320 | */ | ||
302 | void zfcp_hba_dbf_event_qdio(struct zfcp_adapter *adapter, unsigned int status, | 321 | void zfcp_hba_dbf_event_qdio(struct zfcp_adapter *adapter, unsigned int status, |
303 | unsigned int qdio_error, unsigned int siga_error, | 322 | unsigned int qdio_error, unsigned int siga_error, |
304 | int sbal_index, int sbal_count) | 323 | int sbal_index, int sbal_count) |
@@ -810,6 +829,10 @@ void zfcp_rec_dbf_event_action(u8 id2, struct zfcp_erp_action *erp_action) | |||
810 | spin_unlock_irqrestore(&adapter->rec_dbf_lock, flags); | 829 | spin_unlock_irqrestore(&adapter->rec_dbf_lock, flags); |
811 | } | 830 | } |
812 | 831 | ||
832 | /** | ||
833 | * zfcp_san_dbf_event_ct_request - trace event for issued CT request | ||
834 | * @fsf_req: request containing issued CT data | ||
835 | */ | ||
813 | void zfcp_san_dbf_event_ct_request(struct zfcp_fsf_req *fsf_req) | 836 | void zfcp_san_dbf_event_ct_request(struct zfcp_fsf_req *fsf_req) |
814 | { | 837 | { |
815 | struct zfcp_send_ct *ct = (struct zfcp_send_ct *)fsf_req->data; | 838 | struct zfcp_send_ct *ct = (struct zfcp_send_ct *)fsf_req->data; |
@@ -840,6 +863,10 @@ void zfcp_san_dbf_event_ct_request(struct zfcp_fsf_req *fsf_req) | |||
840 | spin_unlock_irqrestore(&adapter->san_dbf_lock, flags); | 863 | spin_unlock_irqrestore(&adapter->san_dbf_lock, flags); |
841 | } | 864 | } |
842 | 865 | ||
866 | /** | ||
867 | * zfcp_san_dbf_event_ct_response - trace event for completion of CT request | ||
868 | * @fsf_req: request containing CT response | ||
869 | */ | ||
843 | void zfcp_san_dbf_event_ct_response(struct zfcp_fsf_req *fsf_req) | 870 | void zfcp_san_dbf_event_ct_response(struct zfcp_fsf_req *fsf_req) |
844 | { | 871 | { |
845 | struct zfcp_send_ct *ct = (struct zfcp_send_ct *)fsf_req->data; | 872 | struct zfcp_send_ct *ct = (struct zfcp_send_ct *)fsf_req->data; |
@@ -892,6 +919,10 @@ static void zfcp_san_dbf_event_els(const char *tag, int level, | |||
892 | spin_unlock_irqrestore(&adapter->san_dbf_lock, flags); | 919 | spin_unlock_irqrestore(&adapter->san_dbf_lock, flags); |
893 | } | 920 | } |
894 | 921 | ||
922 | /** | ||
923 | * zfcp_san_dbf_event_els_request - trace event for issued ELS | ||
924 | * @fsf_req: request containing issued ELS | ||
925 | */ | ||
895 | void zfcp_san_dbf_event_els_request(struct zfcp_fsf_req *fsf_req) | 926 | void zfcp_san_dbf_event_els_request(struct zfcp_fsf_req *fsf_req) |
896 | { | 927 | { |
897 | struct zfcp_send_els *els = (struct zfcp_send_els *)fsf_req->data; | 928 | struct zfcp_send_els *els = (struct zfcp_send_els *)fsf_req->data; |
@@ -902,6 +933,10 @@ void zfcp_san_dbf_event_els_request(struct zfcp_fsf_req *fsf_req) | |||
902 | zfcp_sg_to_address(els->req), els->req->length); | 933 | zfcp_sg_to_address(els->req), els->req->length); |
903 | } | 934 | } |
904 | 935 | ||
936 | /** | ||
937 | * zfcp_san_dbf_event_els_response - trace event for completed ELS | ||
938 | * @fsf_req: request containing ELS response | ||
939 | */ | ||
905 | void zfcp_san_dbf_event_els_response(struct zfcp_fsf_req *fsf_req) | 940 | void zfcp_san_dbf_event_els_response(struct zfcp_fsf_req *fsf_req) |
906 | { | 941 | { |
907 | struct zfcp_send_els *els = (struct zfcp_send_els *)fsf_req->data; | 942 | struct zfcp_send_els *els = (struct zfcp_send_els *)fsf_req->data; |
@@ -913,6 +948,10 @@ void zfcp_san_dbf_event_els_response(struct zfcp_fsf_req *fsf_req) | |||
913 | els->resp->length); | 948 | els->resp->length); |
914 | } | 949 | } |
915 | 950 | ||
951 | /** | ||
952 | * zfcp_san_dbf_event_incoming_els - trace event for incomig ELS | ||
953 | * @fsf_req: request containing unsolicited status buffer with incoming ELS | ||
954 | */ | ||
916 | void zfcp_san_dbf_event_incoming_els(struct zfcp_fsf_req *fsf_req) | 955 | void zfcp_san_dbf_event_incoming_els(struct zfcp_fsf_req *fsf_req) |
917 | { | 956 | { |
918 | struct zfcp_adapter *adapter = fsf_req->adapter; | 957 | struct zfcp_adapter *adapter = fsf_req->adapter; |
@@ -1069,6 +1108,14 @@ static void zfcp_scsi_dbf_event(const char *tag, const char *tag2, int level, | |||
1069 | spin_unlock_irqrestore(&adapter->scsi_dbf_lock, flags); | 1108 | spin_unlock_irqrestore(&adapter->scsi_dbf_lock, flags); |
1070 | } | 1109 | } |
1071 | 1110 | ||
1111 | /** | ||
1112 | * zfcp_scsi_dbf_event_result - trace event for SCSI command completion | ||
1113 | * @tag: tag indicating success or failure of SCSI command | ||
1114 | * @level: trace level applicable for this event | ||
1115 | * @adapter: adapter that has been used to issue the SCSI command | ||
1116 | * @scsi_cmnd: SCSI command pointer | ||
1117 | * @fsf_req: request used to issue SCSI command (might be NULL) | ||
1118 | */ | ||
1072 | void zfcp_scsi_dbf_event_result(const char *tag, int level, | 1119 | void zfcp_scsi_dbf_event_result(const char *tag, int level, |
1073 | struct zfcp_adapter *adapter, | 1120 | struct zfcp_adapter *adapter, |
1074 | struct scsi_cmnd *scsi_cmnd, | 1121 | struct scsi_cmnd *scsi_cmnd, |
@@ -1077,6 +1124,14 @@ void zfcp_scsi_dbf_event_result(const char *tag, int level, | |||
1077 | zfcp_scsi_dbf_event("rslt", tag, level, adapter, scsi_cmnd, fsf_req, 0); | 1124 | zfcp_scsi_dbf_event("rslt", tag, level, adapter, scsi_cmnd, fsf_req, 0); |
1078 | } | 1125 | } |
1079 | 1126 | ||
1127 | /** | ||
1128 | * zfcp_scsi_dbf_event_abort - trace event for SCSI command abort | ||
1129 | * @tag: tag indicating success or failure of abort operation | ||
1130 | * @adapter: adapter thas has been used to issue SCSI command to be aborted | ||
1131 | * @scsi_cmnd: SCSI command to be aborted | ||
1132 | * @new_fsf_req: request containing abort (might be NULL) | ||
1133 | * @old_req_id: identifier of request containg SCSI command to be aborted | ||
1134 | */ | ||
1080 | void zfcp_scsi_dbf_event_abort(const char *tag, struct zfcp_adapter *adapter, | 1135 | void zfcp_scsi_dbf_event_abort(const char *tag, struct zfcp_adapter *adapter, |
1081 | struct scsi_cmnd *scsi_cmnd, | 1136 | struct scsi_cmnd *scsi_cmnd, |
1082 | struct zfcp_fsf_req *new_fsf_req, | 1137 | struct zfcp_fsf_req *new_fsf_req, |
@@ -1086,6 +1141,13 @@ void zfcp_scsi_dbf_event_abort(const char *tag, struct zfcp_adapter *adapter, | |||
1086 | old_req_id); | 1141 | old_req_id); |
1087 | } | 1142 | } |
1088 | 1143 | ||
1144 | /** | ||
1145 | * zfcp_scsi_dbf_event_devreset - trace event for Logical Unit or Target Reset | ||
1146 | * @tag: tag indicating success or failure of reset operation | ||
1147 | * @flag: indicates type of reset (Target Reset, Logical Unit Reset) | ||
1148 | * @unit: unit that needs reset | ||
1149 | * @scsi_cmnd: SCSI command which caused this error recovery | ||
1150 | */ | ||
1089 | void zfcp_scsi_dbf_event_devreset(const char *tag, u8 flag, | 1151 | void zfcp_scsi_dbf_event_devreset(const char *tag, u8 flag, |
1090 | struct zfcp_unit *unit, | 1152 | struct zfcp_unit *unit, |
1091 | struct scsi_cmnd *scsi_cmnd) | 1153 | struct scsi_cmnd *scsi_cmnd) |