zfcp: Cleanup code in debug trace.
Subsystems (3)
cover zfcp: Cleanup code in debug trace.
After updating the contents of the zfcp debug trace in the last patch series, simplify the code, add docbook style description for the interface and move the definitions for the zfcp debug trace to a new header file.
Patches apply to current scsi-misc.
Christof
PATCH 1/9 zfcp: simplify zfcp_dbf_timestamp()
From: Martin Peschke <[email protected]>
Change zfcp_dbf_timestamp() so that it just calculates timespec from timestamp. First step to be able to rip this code out of zfcp. Besides, this change makes it easier to rip out old-style debug view functions.
--- drivers/s390/scsi/zfcp_dbf.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-)
drivers/s390/scsi/zfcp_dbf.c +16 -14
@@ -49,23 +49,17 @@ static void zfcp_dbf_hexdump(debug_info_ } } -static int -zfcp_dbf_stck (char *out_buf,const char *label,unsigned long long stck) +/* FIXME: this duplicate this code in s390 debug feature */ +static void zfcp_dbf_timestamp (unsigned long long stck,struct timespec *time) {unsigned long long sec; -struct timespec dbftime; -int len =0 ; stck -=0x8126d60e46000000LL - (0x3c26700LL *1000000 *4096 ); sec = stck >>12 ;do_div (sec,1000000 ); - dbftime.tv_sec = sec; + time->tv_sec = sec; stck -= (sec *1000000 ) <<12 ; - dbftime.tv_nsec = ((stck *1000 ) >>12 ); - len +=sprintf (out_buf + len,"%-24s%011lu:%06lu\n" , - label, dbftime.tv_sec, dbftime.tv_nsec); - -return len; + time->tv_nsec = ((stck *1000 ) >>12 ); }static int zfcp_dbf_tag (char *out_buf,const char *label,const char *tag)
@@ -146,10 +140,12 @@ zfcp_dbf_view_header(debug_info_t * id, {struct zfcp_dbf_dump *dump = (struct zfcp_dbf_dump *)DEBUG_DATA (entry);int len =0 ; +struct timespec t;if (strncmp (dump->tag,"dump" ,ZFCP_DBF_TAG_SIZE ) !=0 ) { - len +=zfcp_dbf_stck (out_buf + len,"timestamp" , - entry->id.stck); +zfcp_dbf_timestamp (entry->id.stck, &t); + len +=zfcp_dbf_view (out_buf + len,"timestamp" ,"%011lu:%06lu" , + t.tv_sec, t.tv_nsec); len +=zfcp_dbf_view (out_buf + len,"cpu" ,"%02i" , entry->id.fields.cpuid); }else {
@@ -363,6 +359,7 @@ zfcp_hba_dbf_view_response(char *out_buf struct zfcp_hba_dbf_record_response *rec) {int len =0 ; +struct timespec t; len +=zfcp_dbf_view (out_buf + len,"fsf_command" ,"0x%08x" , rec->fsf_command);
@@ -370,7 +367,9 @@ zfcp_hba_dbf_view_response(char *out_buf 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); +zfcp_dbf_timestamp (rec->fsf_issued, &t); + len +=zfcp_dbf_view (out_buf + len,"fsf_issued" ,"%011lu:%06lu" , + t.tv_sec, t.tv_nsec); len +=zfcp_dbf_view (out_buf + len,"fsf_prot_status" ,"0x%08x" , rec->fsf_prot_status); len += zfcp_dbf_view(out_buf + len, "fsf_status", "0x%08x",
@@ -1222,6 +1221,7 @@ zfcp_scsi_dbf_view_format(debug_info_t *struct zfcp_scsi_dbf_record *rec = (struct zfcp_scsi_dbf_record *)in_buf;int len =0 ; +struct timespec t;if (strncmp (rec->tag,"dump" ,ZFCP_DBF_TAG_SIZE ) ==0 )return 0 ;
@@ -1253,7 +1253,9 @@ zfcp_scsi_dbf_view_format(debug_info_t * 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); +zfcp_dbf_timestamp (rec->fsf_issued, &t); + len +=zfcp_dbf_view (out_buf + len,"fsf_issued" ,"%011lu:%06lu" , + t.tv_sec, t.tv_nsec);if (strncmp (rec->tag,"rslt" ,ZFCP_DBF_TAG_SIZE ) ==0 ) { len += zfcp_dbf_view(out_buf + len, "fcp_rsp_validity", "0x%02x",
PATCH 2/9 zfcp: Cleanup debug trace view functions.
In reply to Christof SchmittFrom: Martin Peschke <[email protected]>
Improve readability of code by using more convenient output function.
--- drivers/s390/scsi/zfcp_dbf.c | 380 ++++++++++++++++++------------------------- 1 file changed, 161 insertions(+), 219 deletions(-)
drivers/s390/scsi/zfcp_dbf.c +161 -219
@@ -139,25 +139,21 @@ zfcp_dbf_view_header(debug_info_t * id, debug_entry_t * entry, char *out_buf) {struct zfcp_dbf_dump *dump = (struct zfcp_dbf_dump *)DEBUG_DATA (entry); -int len =0 ;struct timespec t; +char *p = out_buf;if (strncmp (dump->tag,"dump" ,ZFCP_DBF_TAG_SIZE ) !=0 ) {zfcp_dbf_timestamp (entry->id.stck, &t); - len +=zfcp_dbf_view (out_buf + len,"timestamp" ,"%011lu:%06lu" , - t.tv_sec, t.tv_nsec); - len +=zfcp_dbf_view (out_buf + len,"cpu" ,"%02i" , - entry->id.fields.cpuid); - }else { - len +=zfcp_dbf_view_dump (out_buf + len,NULL , - dump->data, - dump->size, - dump->offset, dump->total_size); +zfcp_dbf_out (&p,"timestamp" ,"%011lu:%06lu" , + t.tv_sec, t.tv_nsec); +zfcp_dbf_out (&p,"cpu" ,"%02i" , entry->id.fields.cpuid); + }else { + p +=zfcp_dbf_view_dump (p,NULL , dump->data, dump->size, + dump->offset, dump->total_size);if ((dump->offset + dump->size) == dump->total_size) - len +=sprintf (out_buf + len,"\n" ); + p +=sprintf (p,"\n" ); } - -return len; +return p - out_buf; }void zfcp_hba_dbf_event_fsf_response (struct zfcp_fsf_req *fsf_req)
@@ -354,82 +350,65 @@ zfcp_hba_dbf_event_qdio(struct zfcp_adapspin_unlock_irqrestore (&adapter->hba_dbf_lock, flags); } -static int -zfcp_hba_dbf_view_response (char *out_buf, -struct zfcp_hba_dbf_record_response *rec) +static int zfcp_hba_dbf_view_response (char *buf, +struct zfcp_hba_dbf_record_response *r) { -int len =0 ;struct timespec t; +char *p = buf; - len +=zfcp_dbf_view (out_buf + len,"fsf_command" ,"0x%08x" , - rec->fsf_command); - 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); -zfcp_dbf_timestamp (rec->fsf_issued, &t); - len +=zfcp_dbf_view (out_buf + len,"fsf_issued" ,"%011lu:%06lu" , - t.tv_sec, t.tv_nsec); - len +=zfcp_dbf_view (out_buf + len,"fsf_prot_status" ,"0x%08x" , - rec->fsf_prot_status); - len +=zfcp_dbf_view (out_buf + len,"fsf_status" ,"0x%08x" , - rec->fsf_status); - len +=zfcp_dbf_view_dump (out_buf + len,"fsf_prot_status_qual" , - rec->fsf_prot_status_qual, -FSF_PROT_STATUS_QUAL_SIZE , -0 ,FSF_PROT_STATUS_QUAL_SIZE ); - len +=zfcp_dbf_view_dump (out_buf + len,"fsf_status_qual" , - rec->fsf_status_qual, -FSF_STATUS_QUALIFIER_SIZE , -0 ,FSF_STATUS_QUALIFIER_SIZE ); - len +=zfcp_dbf_view (out_buf + len,"fsf_req_status" ,"0x%08x" , - rec->fsf_req_status); - len +=zfcp_dbf_view (out_buf + len,"sbal_first" ,"0x%02x" , - rec->sbal_first); - len +=zfcp_dbf_view (out_buf + len,"sbal_curr" ,"0x%02x" , - rec->sbal_curr); - len +=zfcp_dbf_view (out_buf + len,"sbal_last" ,"0x%02x" , - rec->sbal_last); - len +=zfcp_dbf_view (out_buf + len,"pool" ,"0x%02x" , rec->pool); +zfcp_dbf_out (&p,"fsf_command" ,"0x%08x" , r->fsf_command); +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); +zfcp_dbf_out (&p,"fsf_prot_status" ,"0x%08x" , r->fsf_prot_status); +zfcp_dbf_out (&p,"fsf_status" ,"0x%08x" , r->fsf_status); + p +=zfcp_dbf_view_dump (p,"fsf_prot_status_qual" , + r->fsf_prot_status_qual, +FSF_PROT_STATUS_QUAL_SIZE , +0 ,FSF_PROT_STATUS_QUAL_SIZE ); + p +=zfcp_dbf_view_dump (p,"fsf_status_qual" , + r->fsf_status_qual, +FSF_STATUS_QUALIFIER_SIZE , +0 ,FSF_STATUS_QUALIFIER_SIZE ); +zfcp_dbf_out (&p,"fsf_req_status" ,"0x%08x" , r->fsf_req_status); +zfcp_dbf_out (&p,"sbal_first" ,"0x%02x" , r->sbal_first); +zfcp_dbf_out (&p,"sbal_curr" ,"0x%02x" , r->sbal_curr); +zfcp_dbf_out (&p,"sbal_last" ,"0x%02x" , r->sbal_last); +zfcp_dbf_out (&p,"pool" ,"0x%02x" , r->pool); -switch (rec->fsf_command) { +switch (r->fsf_command) {case FSF_QTCB_FCP_CMND : -if (rec->fsf_req_status &ZFCP_STATUS_FSFREQ_TASK_MANAGEMENT ) +if (r->fsf_req_status &ZFCP_STATUS_FSFREQ_TASK_MANAGEMENT )break ; - len +=zfcp_dbf_view (out_buf + len,"scsi_cmnd" ,"0x%0Lx" , - rec->data.send_fcp.scsi_cmnd); - len +=zfcp_dbf_view (out_buf + len,"scsi_serial" ,"0x%016Lx" , - rec->data.send_fcp.scsi_serial); +zfcp_dbf_out (&p,"scsi_cmnd" ,"0x%0Lx" , + r->data.send_fcp.scsi_cmnd); +zfcp_dbf_out (&p,"scsi_serial" ,"0x%016Lx" , + r->data.send_fcp.scsi_serial);break ;case FSF_QTCB_OPEN_PORT_WITH_DID :case FSF_QTCB_CLOSE_PORT :case FSF_QTCB_CLOSE_PHYSICAL_PORT : - len +=zfcp_dbf_view (out_buf + len,"wwpn" ,"0x%016Lx" , - rec->data.port.wwpn); - len +=zfcp_dbf_view (out_buf + len,"d_id" ,"0x%06x" , - rec->data.port.d_id); - len +=zfcp_dbf_view (out_buf + len,"port_handle" ,"0x%08x" , - rec->data.port.port_handle); +zfcp_dbf_out (&p,"wwpn" ,"0x%016Lx" , r->data.port.wwpn); +zfcp_dbf_out (&p,"d_id" ,"0x%06x" , r->data.port.d_id); +zfcp_dbf_out (&p,"port_handle" ,"0x%08x" , + r->data.port.port_handle);break ;case FSF_QTCB_OPEN_LUN :case FSF_QTCB_CLOSE_LUN : - len +=zfcp_dbf_view (out_buf + len,"wwpn" ,"0x%016Lx" , - rec->data.unit.wwpn); - len +=zfcp_dbf_view (out_buf + len,"fcp_lun" ,"0x%016Lx" , - rec->data.unit.fcp_lun); - len +=zfcp_dbf_view (out_buf + len,"port_handle" ,"0x%08x" , - rec->data.unit.port_handle); - len +=zfcp_dbf_view (out_buf + len,"lun_handle" ,"0x%08x" , - rec->data.unit.lun_handle); +zfcp_dbf_out (&p,"wwpn" ,"0x%016Lx" , r->data.unit.wwpn); +zfcp_dbf_out (&p,"fcp_lun" ,"0x%016Lx" , r->data.unit.fcp_lun); +zfcp_dbf_out (&p,"port_handle" ,"0x%08x" , + r->data.unit.port_handle); +zfcp_dbf_out (&p,"lun_handle" ,"0x%08x" , + r->data.unit.lun_handle);break ;case FSF_QTCB_SEND_ELS : - len +=zfcp_dbf_view (out_buf + len,"d_id" ,"0x%06x" , - rec->data.send_els.d_id); - len +=zfcp_dbf_view (out_buf + len,"ls_code" ,"0x%02x" , - rec->data.send_els.ls_code); +zfcp_dbf_out (&p,"d_id" ,"0x%06x" , r->data.send_els.d_id); +zfcp_dbf_out (&p,"ls_code" ,"0x%02x" , r->data.send_els.ls_code);break ;case FSF_QTCB_ABORT_FCP_CMND :
@@ -440,47 +419,36 @@ zfcp_hba_dbf_view_response(char *out_bufcase FSF_QTCB_UPLOAD_CONTROL_FILE :break ; } - -return len; +return p - buf; } -static int -zfcp_hba_dbf_view_status (char *out_buf,struct zfcp_hba_dbf_record_status *rec) +static int zfcp_hba_dbf_view_status (char *buf, +struct zfcp_hba_dbf_record_status *r) { -int len =0 ; - - len +=zfcp_dbf_view (out_buf + len,"failed" ,"0x%02x" , rec->failed); - len +=zfcp_dbf_view (out_buf + len,"status_type" ,"0x%08x" , - rec->status_type); - len +=zfcp_dbf_view (out_buf + len,"status_subtype" ,"0x%08x" , - rec->status_subtype); - len +=zfcp_dbf_view_dump (out_buf + len,"queue_designator" , - (char *)&rec->queue_designator, -sizeof (struct fsf_queue_designator ), -0 ,sizeof (struct fsf_queue_designator )); - len +=zfcp_dbf_view_dump (out_buf + len,"payload" , - (char *)&rec->payload, - rec->payload_size,0 , rec->payload_size); +char *p = buf; -return len; +zfcp_dbf_out (&p,"failed" ,"0x%02x" , r->failed); +zfcp_dbf_out (&p,"status_type" ,"0x%08x" , r->status_type); +zfcp_dbf_out (&p,"status_subtype" ,"0x%08x" , r->status_subtype); + p +=zfcp_dbf_view_dump (p,"queue_designator" , + (char *)&r->queue_designator, +sizeof (struct fsf_queue_designator ), +0 ,sizeof (struct fsf_queue_designator )); + p +=zfcp_dbf_view_dump (p,"payload" , (char *)&r->payload, + r->payload_size,0 , r->payload_size); +return p - buf; } -static int -zfcp_hba_dbf_view_qdio (char *out_buf,struct zfcp_hba_dbf_record_qdio *rec) +static int zfcp_hba_dbf_view_qdio (char *buf,struct zfcp_hba_dbf_record_qdio *r) { -int len =0 ; - - len +=zfcp_dbf_view (out_buf + len,"status" ,"0x%08x" , rec->status); - len +=zfcp_dbf_view (out_buf + len,"qdio_error" ,"0x%08x" , - rec->qdio_error); - len +=zfcp_dbf_view (out_buf + len,"siga_error" ,"0x%08x" , - rec->siga_error); - len +=zfcp_dbf_view (out_buf + len,"sbal_index" ,"0x%02x" , - rec->sbal_index); - len +=zfcp_dbf_view (out_buf + len,"sbal_count" ,"0x%02x" , - rec->sbal_count); +char *p = buf; -return len; +zfcp_dbf_out (&p,"status" ,"0x%08x" , r->status); +zfcp_dbf_out (&p,"qdio_error" ,"0x%08x" , r->qdio_error); +zfcp_dbf_out (&p,"siga_error" ,"0x%08x" , r->siga_error); +zfcp_dbf_out (&p,"sbal_index" ,"0x%02x" , r->sbal_index); +zfcp_dbf_out (&p,"sbal_count" ,"0x%02x" , r->sbal_count); +return p - buf; } static int
@@ -720,8 +688,8 @@ static int zfcp_rec_dbf_view_format(debuzfcp_dbf_out (&p,"step" ,"0x%08Lx" , r->u.action.step);break ; } -sprintf (p,"\n" ); -return (p - buf) +1 ; + p +=sprintf (p,"\n" ); +return p - buf; }static struct debug_view zfcp_rec_dbf_view = {
@@ -1024,71 +992,65 @@ 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; +struct zfcp_san_dbf_record *r = (struct zfcp_san_dbf_record *)in_buf;char *buffer =NULL ;int buflen =0 , total =0 ; -int len =0 ; +char *p = out_buf; -if (strncmp (rec->tag,"dump" ,ZFCP_DBF_TAG_SIZE ) ==0 ) +if (strncmp (r->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; + p +=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 ) { +/* FIXME: struct zfcp_dbf_ct_req *ct = ...; */ +zfcp_dbf_out (&p,"cmd_req_code" ,"0x%04x" , + r->type.ct.type.request.cmd_req_code); +zfcp_dbf_out (&p,"revision" ,"0x%02x" , + r->type.ct.type.request.revision); +zfcp_dbf_out (&p,"gs_type" ,"0x%02x" , + r->type.ct.type.request.gs_type); +zfcp_dbf_out (&p,"gs_subtype" ,"0x%02x" , + r->type.ct.type.request.gs_subtype); +zfcp_dbf_out (&p,"options" ,"0x%02x" , + r->type.ct.type.request.options); +zfcp_dbf_out (&p,"max_res_size" ,"0x%04x" , + r->type.ct.type.request.max_res_size); + total = r->type.ct.payload_size; + buffer = r->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; + }else if (strncmp (r->tag,"rctc" ,ZFCP_DBF_TAG_SIZE ) ==0 ) { +zfcp_dbf_out (&p,"cmd_rsp_code" ,"0x%04x" , + r->type.ct.type.response.cmd_rsp_code); +zfcp_dbf_out (&p,"revision" ,"0x%02x" , + r->type.ct.type.response.revision); +zfcp_dbf_out (&p,"reason_code" ,"0x%02x" , + r->type.ct.type.response.reason_code); +zfcp_dbf_out (&p,"reason_code_expl" ,"0x%02x" , + r->type.ct.type.response.reason_code_expl); +zfcp_dbf_out (&p,"vendor_unique" ,"0x%02x" , + r->type.ct.type.response.vendor_unique); + total = r->type.ct.payload_size; + buffer = r->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; + }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 ) { +zfcp_dbf_out (&p,"ls_code" ,"0x%02x" , r->type.els.ls_code); + total = r->type.els.payload_size; + buffer = r->type.els.payload; buflen =min (total,ZFCP_DBF_ELS_PAYLOAD ); } - len +=zfcp_dbf_view_dump (out_buf + len,"payload" , - buffer, buflen,0 , total); - + p +=zfcp_dbf_view_dump (p,"payload" , buffer, buflen,0 , total);if (buflen == total) - len +=sprintf (out_buf + len,"\n" ); + p +=sprintf (p,"\n" ); -return len; +return p - out_buf; }static struct debug_view zfcp_san_dbf_view = {
@@ -1218,71 +1180,51 @@ 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 ; +struct zfcp_scsi_dbf_record *r = (struct zfcp_scsi_dbf_record *)in_buf;struct timespec t; +char *p = out_buf; -if (strncmp (rec->tag,"dump" ,ZFCP_DBF_TAG_SIZE ) ==0 ) +if (strncmp (r->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); -zfcp_dbf_timestamp (rec->fsf_issued, &t); - len +=zfcp_dbf_view (out_buf + len,"fsf_issued" ,"%011lu:%06lu" , - t.tv_sec, t.tv_nsec); -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); + p +=zfcp_dbf_tag (p,"tag" , r->tag); + p +=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); + p +=zfcp_dbf_view_dump (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->type.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->type.fcp.rsp_validity); +zfcp_dbf_out (&p,"fcp_rsp_scsi_status" , +"0x%02x" , r->type.fcp.rsp_scsi_status); +zfcp_dbf_out (&p,"fcp_rsp_resid" ,"0x%08x" , + r->type.fcp.rsp_resid); +zfcp_dbf_out (&p,"fcp_rsp_code" ,"0x%08x" , + r->type.fcp.rsp_code); +zfcp_dbf_out (&p,"fcp_sns_info_len" ,"0x%08x" , + r->type.fcp.sns_info_len); + p +=zfcp_dbf_view_dump (p,"fcp_sns_info" , + r->type.fcp.sns_info, +min ((int )r->type.fcp.sns_info_len, +ZFCP_DBF_SCSI_FCP_SNS_INFO ),0 , + r->type.fcp.sns_info_len); } - - len +=sprintf (out_buf + len,"\n" ); - -return len; + p +=sprintf (p,"\n" ); +return p - out_buf; }static struct debug_view zfcp_scsi_dbf_view = {
PATCH 3/9 zfcp: Remove obsolete output function from debug trace.
In reply to Christof SchmittFrom: Martin Peschke <[email protected]>
Remove obsolete output function.
--- drivers/s390/scsi/zfcp_dbf.c | 15 --------------- 1 file changed, 15 deletions(-)
drivers/s390/scsi/zfcp_dbf.c +0 -15
@@ -74,21 +74,6 @@ static int zfcp_dbf_tag(char *out_buf, creturn len; } -static int -zfcp_dbf_view (char *out_buf,const char *label,const char *format, ...) -{ -va_list arg; -int len =0 ; - - len +=sprintf (out_buf + len,"%-24s" , label); -va_start (arg, format); - len +=vsprintf (out_buf + len, format, arg); -va_end (arg); - len +=sprintf (out_buf + len,"\n" ); - -return len; -} -static void zfcp_dbf_outs (char **buf,const char *s1,const char *s2) { *buf +=sprintf (*buf,"%-24s%s\n" , s1, s2);
PATCH 4/9 zfcp: Simplify usage of hex dump output function for debug trace.
In reply to Christof SchmittFrom: Martin Peschke <[email protected]>
Simplify usage of output function for hex dumps.
--- drivers/s390/scsi/zfcp_dbf.c | 69 +++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 41 deletions(-)
drivers/s390/scsi/zfcp_dbf.c +28 -41
@@ -90,33 +90,26 @@ static void zfcp_dbf_out(char **buf, con *buf +=sprintf (*buf,"\n" ); } -static int -zfcp_dbf_view_dump (char *out_buf,const char *label, -char *buffer,int buflen,int offset,int total_size) +static void zfcp_dbf_outd (char **p,const char *label,char *buffer, +int buflen,int offset,int total_size) { -int len =0 ; - -if (offset ==0 ) - len +=sprintf (out_buf + len,"%-24s " , label); - +if (!offset) + *p +=sprintf (*p,"%-24s " , label);while (buflen--) {if (offset >0 ) {if ((offset %32 ) ==0 ) - len +=sprintf (out_buf + len,"\n%-24c " ,' ' ); + *p +=sprintf (*p,"\n%-24c " ,' ' );else if ((offset %4 ) ==0 ) - len +=sprintf (out_buf + len," " ); + *p +=sprintf (*p," " ); } - len +=sprintf (out_buf + len,"%02x" , *buffer++); + *p +=sprintf (*p,"%02x" , *buffer++);if (++offset == total_size) { - len +=sprintf (out_buf + len,"\n" ); + *p +=sprintf (*p,"\n" );break ; } } - -if (total_size ==0 ) - len +=sprintf (out_buf + len,"\n" ); - -return len; +if (!total_size) + *p +=sprintf (*p,"\n" ); } static int
@@ -133,8 +126,8 @@ zfcp_dbf_view_header(debug_info_t * id, t.tv_sec, t.tv_nsec);zfcp_dbf_out (&p,"cpu" ,"%02i" , entry->id.fields.cpuid); }else { - p +=zfcp_dbf_view_dump (p,NULL , dump->data, dump->size, - dump->offset, dump->total_size); +zfcp_dbf_outd (&p,NULL , dump->data, dump->size, dump->offset, + dump->total_size);if ((dump->offset + dump->size) == dump->total_size) p +=sprintf (p,"\n" ); }
@@ -348,14 +341,10 @@ static int zfcp_hba_dbf_view_response(chzfcp_dbf_out (&p,"fsf_issued" ,"%011lu:%06lu" , t.tv_sec, t.tv_nsec);zfcp_dbf_out (&p,"fsf_prot_status" ,"0x%08x" , r->fsf_prot_status);zfcp_dbf_out (&p,"fsf_status" ,"0x%08x" , r->fsf_status); - p +=zfcp_dbf_view_dump (p,"fsf_prot_status_qual" , - r->fsf_prot_status_qual, -FSF_PROT_STATUS_QUAL_SIZE , -0 ,FSF_PROT_STATUS_QUAL_SIZE ); - p +=zfcp_dbf_view_dump (p,"fsf_status_qual" , - r->fsf_status_qual, -FSF_STATUS_QUALIFIER_SIZE , -0 ,FSF_STATUS_QUALIFIER_SIZE ); +zfcp_dbf_outd (&p,"fsf_prot_status_qual" , r->fsf_prot_status_qual, +FSF_PROT_STATUS_QUAL_SIZE ,0 ,FSF_PROT_STATUS_QUAL_SIZE ); +zfcp_dbf_outd (&p,"fsf_status_qual" , r->fsf_status_qual, +FSF_STATUS_QUALIFIER_SIZE ,0 ,FSF_STATUS_QUALIFIER_SIZE );zfcp_dbf_out (&p,"fsf_req_status" ,"0x%08x" , r->fsf_req_status);zfcp_dbf_out (&p,"sbal_first" ,"0x%02x" , r->sbal_first);zfcp_dbf_out (&p,"sbal_curr" ,"0x%02x" , r->sbal_curr);
@@ -415,12 +404,11 @@ static int zfcp_hba_dbf_view_status(charzfcp_dbf_out (&p,"failed" ,"0x%02x" , r->failed);zfcp_dbf_out (&p,"status_type" ,"0x%08x" , r->status_type);zfcp_dbf_out (&p,"status_subtype" ,"0x%08x" , r->status_subtype); - p +=zfcp_dbf_view_dump (p,"queue_designator" , - (char *)&r->queue_designator, -sizeof (struct fsf_queue_designator ), -0 ,sizeof (struct fsf_queue_designator )); - p +=zfcp_dbf_view_dump (p,"payload" , (char *)&r->payload, - r->payload_size,0 , r->payload_size); +zfcp_dbf_outd (&p,"queue_designator" , (char *)&r->queue_designator, +sizeof (struct fsf_queue_designator ),0 , +sizeof (struct fsf_queue_designator )); +zfcp_dbf_outd (&p,"payload" , (char *)&r->payload, r->payload_size,0 , + r->payload_size);return p - buf; }
@@ -1031,7 +1019,7 @@ zfcp_san_dbf_view_format(debug_info_t * buflen =min (total,ZFCP_DBF_ELS_PAYLOAD ); } - p +=zfcp_dbf_view_dump (p,"payload" , buffer, buflen,0 , total); +zfcp_dbf_outd (&p,"payload" , buffer, buflen,0 , total);if (buflen == total) p +=sprintf (p,"\n" );
@@ -1179,8 +1167,8 @@ zfcp_scsi_dbf_view_format(debug_info_t *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); - p +=zfcp_dbf_view_dump (p,"scsi_opcode" , r->scsi_opcode, -ZFCP_DBF_SCSI_OPCODE ,0 ,ZFCP_DBF_SCSI_OPCODE ); +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 )
@@ -1202,11 +1190,10 @@ zfcp_scsi_dbf_view_format(debug_info_t * r->type.fcp.rsp_code);zfcp_dbf_out (&p,"fcp_sns_info_len" ,"0x%08x" , r->type.fcp.sns_info_len); - p +=zfcp_dbf_view_dump (p,"fcp_sns_info" , - r->type.fcp.sns_info, -min ((int )r->type.fcp.sns_info_len, -ZFCP_DBF_SCSI_FCP_SNS_INFO ),0 , - r->type.fcp.sns_info_len); +zfcp_dbf_outd (&p,"fcp_sns_info" , r->type.fcp.sns_info, +min ((int )r->type.fcp.sns_info_len, +ZFCP_DBF_SCSI_FCP_SNS_INFO ),0 , + r->type.fcp.sns_info_len); } p +=sprintf (p,"\n" );return p - out_buf;
PATCH 5/9 zfcp: Simplify zfcp_dbf_tag and related functions in debug trace.
In reply to Christof SchmittFrom: Martin Peschke <[email protected]>
Simplify usage of zfcp_dbf_tag() and calling functions.
--- drivers/s390/scsi/zfcp_dbf.c | 141 +++++++++++++++++++------------------------ 1 file changed, 64 insertions(+), 77 deletions(-)
drivers/s390/scsi/zfcp_dbf.c +64 -77
@@ -62,16 +62,14 @@ static void zfcp_dbf_timestamp(unsigned time->tv_nsec = ((stck *1000 ) >>12 ); } -static int zfcp_dbf_tag (char *out_buf,const char *label,const char *tag) +static void zfcp_dbf_tag (char **p,const char *label,const char *tag) { -int len =0 , i; +int i; - len +=sprintf (out_buf + len,"%-24s" , label); + *p +=sprintf (*p,"%-24s" , label);for (i =0 ; i <ZFCP_DBF_TAG_SIZE ; i++) - len +=sprintf (out_buf + len,"%c" , tag[i]); - len +=sprintf (out_buf + len,"\n" ); - -return len; + *p +=sprintf (*p,"%c" , tag[i]); + *p +=sprintf (*p,"\n" ); }static void zfcp_dbf_outs (char **buf,const char *s1,const char *s2)
@@ -328,61 +326,60 @@ zfcp_hba_dbf_event_qdio(struct zfcp_adapspin_unlock_irqrestore (&adapter->hba_dbf_lock, flags); } -static int zfcp_hba_dbf_view_response (char *buf, -struct zfcp_hba_dbf_record_response *r) +static void zfcp_hba_dbf_view_response (char **p, +struct zfcp_hba_dbf_record_response *r) {struct timespec t; -char *p = buf; -zfcp_dbf_out (&p,"fsf_command" ,"0x%08x" , r->fsf_command); -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,"fsf_command" ,"0x%08x" , r->fsf_command); +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); -zfcp_dbf_out (&p,"fsf_prot_status" ,"0x%08x" , r->fsf_prot_status); -zfcp_dbf_out (&p,"fsf_status" ,"0x%08x" , r->fsf_status); -zfcp_dbf_outd (&p,"fsf_prot_status_qual" , r->fsf_prot_status_qual, +zfcp_dbf_out (p,"fsf_issued" ,"%011lu:%06lu" , t.tv_sec, t.tv_nsec); +zfcp_dbf_out (p,"fsf_prot_status" ,"0x%08x" , r->fsf_prot_status); +zfcp_dbf_out (p,"fsf_status" ,"0x%08x" , r->fsf_status); +zfcp_dbf_outd (p,"fsf_prot_status_qual" , r->fsf_prot_status_qual,FSF_PROT_STATUS_QUAL_SIZE ,0 ,FSF_PROT_STATUS_QUAL_SIZE ); -zfcp_dbf_outd (&p,"fsf_status_qual" , r->fsf_status_qual, +zfcp_dbf_outd (p,"fsf_status_qual" , r->fsf_status_qual,FSF_STATUS_QUALIFIER_SIZE ,0 ,FSF_STATUS_QUALIFIER_SIZE ); -zfcp_dbf_out (&p,"fsf_req_status" ,"0x%08x" , r->fsf_req_status); -zfcp_dbf_out (&p,"sbal_first" ,"0x%02x" , r->sbal_first); -zfcp_dbf_out (&p,"sbal_curr" ,"0x%02x" , r->sbal_curr); -zfcp_dbf_out (&p,"sbal_last" ,"0x%02x" , r->sbal_last); -zfcp_dbf_out (&p,"pool" ,"0x%02x" , r->pool); +zfcp_dbf_out (p,"fsf_req_status" ,"0x%08x" , r->fsf_req_status); +zfcp_dbf_out (p,"sbal_first" ,"0x%02x" , r->sbal_first); +zfcp_dbf_out (p,"sbal_curr" ,"0x%02x" , r->sbal_curr); +zfcp_dbf_out (p,"sbal_last" ,"0x%02x" , r->sbal_last); +zfcp_dbf_out (p,"pool" ,"0x%02x" , r->pool);switch (r->fsf_command) {case FSF_QTCB_FCP_CMND :if (r->fsf_req_status &ZFCP_STATUS_FSFREQ_TASK_MANAGEMENT )break ; -zfcp_dbf_out (&p,"scsi_cmnd" ,"0x%0Lx" , +zfcp_dbf_out (p,"scsi_cmnd" ,"0x%0Lx" , r->data.send_fcp.scsi_cmnd); -zfcp_dbf_out (&p,"scsi_serial" ,"0x%016Lx" , +zfcp_dbf_out (p,"scsi_serial" ,"0x%016Lx" , r->data.send_fcp.scsi_serial);break ;case FSF_QTCB_OPEN_PORT_WITH_DID :case FSF_QTCB_CLOSE_PORT :case FSF_QTCB_CLOSE_PHYSICAL_PORT : -zfcp_dbf_out (&p,"wwpn" ,"0x%016Lx" , r->data.port.wwpn); -zfcp_dbf_out (&p,"d_id" ,"0x%06x" , r->data.port.d_id); -zfcp_dbf_out (&p,"port_handle" ,"0x%08x" , +zfcp_dbf_out (p,"wwpn" ,"0x%016Lx" , r->data.port.wwpn); +zfcp_dbf_out (p,"d_id" ,"0x%06x" , r->data.port.d_id); +zfcp_dbf_out (p,"port_handle" ,"0x%08x" , r->data.port.port_handle);break ;case FSF_QTCB_OPEN_LUN :case FSF_QTCB_CLOSE_LUN : -zfcp_dbf_out (&p,"wwpn" ,"0x%016Lx" , r->data.unit.wwpn); -zfcp_dbf_out (&p,"fcp_lun" ,"0x%016Lx" , r->data.unit.fcp_lun); -zfcp_dbf_out (&p,"port_handle" ,"0x%08x" , +zfcp_dbf_out (p,"wwpn" ,"0x%016Lx" , r->data.unit.wwpn); +zfcp_dbf_out (p,"fcp_lun" ,"0x%016Lx" , r->data.unit.fcp_lun); +zfcp_dbf_out (p,"port_handle" ,"0x%08x" , r->data.unit.port_handle); -zfcp_dbf_out (&p,"lun_handle" ,"0x%08x" , +zfcp_dbf_out (p,"lun_handle" ,"0x%08x" , r->data.unit.lun_handle);break ;case FSF_QTCB_SEND_ELS : -zfcp_dbf_out (&p,"d_id" ,"0x%06x" , r->data.send_els.d_id); -zfcp_dbf_out (&p,"ls_code" ,"0x%02x" , r->data.send_els.ls_code); +zfcp_dbf_out (p,"d_id" ,"0x%06x" , r->data.send_els.d_id); +zfcp_dbf_out (p,"ls_code" ,"0x%02x" , r->data.send_els.ls_code);break ;case FSF_QTCB_ABORT_FCP_CMND :
@@ -393,62 +390,52 @@ static int zfcp_hba_dbf_view_response(chcase FSF_QTCB_UPLOAD_CONTROL_FILE :break ; } -return p - buf; } -static int zfcp_hba_dbf_view_status (char *buf, -struct zfcp_hba_dbf_record_status *r) +static void zfcp_hba_dbf_view_status (char **p, +struct zfcp_hba_dbf_record_status *r) { -char *p = buf; - -zfcp_dbf_out (&p,"failed" ,"0x%02x" , r->failed); -zfcp_dbf_out (&p,"status_type" ,"0x%08x" , r->status_type); -zfcp_dbf_out (&p,"status_subtype" ,"0x%08x" , r->status_subtype); -zfcp_dbf_outd (&p,"queue_designator" , (char *)&r->queue_designator, +zfcp_dbf_out (p,"failed" ,"0x%02x" , r->failed); +zfcp_dbf_out (p,"status_type" ,"0x%08x" , r->status_type); +zfcp_dbf_out (p,"status_subtype" ,"0x%08x" , r->status_subtype); +zfcp_dbf_outd (p,"queue_designator" , (char *)&r->queue_designator,sizeof (struct fsf_queue_designator ),0 ,sizeof (struct fsf_queue_designator )); -zfcp_dbf_outd (&p,"payload" , (char *)&r->payload, r->payload_size,0 , +zfcp_dbf_outd (p,"payload" , (char *)&r->payload, r->payload_size,0 , r->payload_size); -return p - buf; } -static int zfcp_hba_dbf_view_qdio (char *buf,struct zfcp_hba_dbf_record_qdio *r) +static void zfcp_hba_dbf_view_qdio (char **p,struct zfcp_hba_dbf_record_qdio *r) { -char *p = buf; - -zfcp_dbf_out (&p,"status" ,"0x%08x" , r->status); -zfcp_dbf_out (&p,"qdio_error" ,"0x%08x" , r->qdio_error); -zfcp_dbf_out (&p,"siga_error" ,"0x%08x" , r->siga_error); -zfcp_dbf_out (&p,"sbal_index" ,"0x%02x" , r->sbal_index); -zfcp_dbf_out (&p,"sbal_count" ,"0x%02x" , r->sbal_count); -return p - buf; +zfcp_dbf_out (p,"status" ,"0x%08x" , r->status); +zfcp_dbf_out (p,"qdio_error" ,"0x%08x" , r->qdio_error); +zfcp_dbf_out (p,"siga_error" ,"0x%08x" , r->siga_error); +zfcp_dbf_out (p,"sbal_index" ,"0x%02x" , r->sbal_index); +zfcp_dbf_out (p,"sbal_count" ,"0x%02x" , r->sbal_count); } -static int -zfcp_hba_dbf_view_format (debug_info_t * id,struct debug_view *view, -char *out_buf,const char *in_buf) +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 ; +struct zfcp_hba_dbf_record *r = (struct zfcp_hba_dbf_record *)in_buf; +char *p = out_buf; -if (strncmp (rec->tag,"dump" ,ZFCP_DBF_TAG_SIZE ) ==0 ) +if (strncmp (r->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" ); +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->type.response); +else if (strncmp (r->tag,"stat" ,ZFCP_DBF_TAG_SIZE ) ==0 ) +zfcp_hba_dbf_view_status (&p, &r->type.status); +else if (strncmp (r->tag,"qdio" ,ZFCP_DBF_TAG_SIZE ) ==0 ) +zfcp_hba_dbf_view_qdio (&p, &r->type.qdio); -return len; + p +=sprintf (p,"\n" ); +return p - out_buf; }static struct debug_view zfcp_hba_dbf_view = {
@@ -973,7 +960,7 @@ zfcp_san_dbf_view_format(debug_info_t *if (strncmp (r->tag,"dump" ,ZFCP_DBF_TAG_SIZE ) ==0 )return 0 ; - p +=zfcp_dbf_tag (p,"tag" , r->tag); +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);
@@ -1160,8 +1147,8 @@ zfcp_scsi_dbf_view_format(debug_info_t *if (strncmp (r->tag,"dump" ,ZFCP_DBF_TAG_SIZE ) ==0 )return 0 ; - p +=zfcp_dbf_tag (p,"tag" , r->tag); - p +=zfcp_dbf_tag (p,"tag2" , r->tag2); +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);
PATCH 6/9 zfcp: Move DBF definitions to private header file
In reply to Christof SchmittFrom: Christof Schmitt <[email protected]>
Unclutter the global zfcp_def.h header. Move everything required to call into the debug feature to a new header file.
--- drivers/s390/scsi/zfcp_dbf.h | 233 +++++++++++++++++++++++++++++++++++++++++++ drivers/s390/scsi/zfcp_def.h | 210 -------------------------------------- 2 files changed, 234 insertions(+), 209 deletions(-)
drivers/s390/scsi/zfcp_dbf.h new file +233 -0
@@ -0,0 +1,233 @@ +/* +* This file is part of the zfcp device driver for +* FCP adapters for IBM System z9 and zSeries. +* +* Copyright IBM Corp. 2008, 2008 +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2, or (at your option) +* any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef ZFCP_DBF_H +#define ZFCP_DBF_H + +#include "zfcp_fsf.h" + +#define ZFCP_DBF_TAG_SIZE 4 + +struct zfcp_dbf_dump { +u8 tag[ZFCP_DBF_TAG_SIZE ]; +u32 total_size;/* size of total dump data */ +u32 offset;/* how much data has being already dumped */ +u32 size;/* how much data comes with this record */ +u8 data[];/* dump data */ +} __attribute__ ((packed)); + +struct zfcp_rec_dbf_record_thread { +u32 sema; +u32 total; +u32 ready; +u32 running; +} __attribute__ ((packed)); + +struct zfcp_rec_dbf_record_target { +u64 ref; +u32 status; +u32 d_id; +u64 wwpn; +u64 fcp_lun; +u32 erp_count; +} __attribute__ ((packed)); + +struct zfcp_rec_dbf_record_trigger { +u8 want; +u8 need; +u32 as; +u32 ps; +u32 us; +u64 ref; +u64 action; +u64 wwpn; +u64 fcp_lun; +} __attribute__ ((packed)); + +struct zfcp_rec_dbf_record_action { +u32 status; +u32 step; +u64 action; +u64 fsf_req; +} __attribute__ ((packed)); + +struct zfcp_rec_dbf_record { +u8 id; +u8 id2; +union { +struct zfcp_rec_dbf_record_action action; +struct zfcp_rec_dbf_record_thread thread; +struct zfcp_rec_dbf_record_target target; +struct zfcp_rec_dbf_record_trigger trigger; + } u; +} __attribute__ ((packed)); + +enum { +ZFCP_REC_DBF_ID_ACTION , +ZFCP_REC_DBF_ID_THREAD , +ZFCP_REC_DBF_ID_TARGET , +ZFCP_REC_DBF_ID_TRIGGER , +}; + +struct zfcp_hba_dbf_record_response { +u32 fsf_command; +u64 fsf_reqid; +u32 fsf_seqno; +u64 fsf_issued; +u32 fsf_prot_status; +u32 fsf_status; +u8 fsf_prot_status_qual[FSF_PROT_STATUS_QUAL_SIZE ]; +u8 fsf_status_qual[FSF_STATUS_QUALIFIER_SIZE ]; +u32 fsf_req_status; +u8 sbal_first; +u8 sbal_curr; +u8 sbal_last; +u8 pool; +u64 erp_action; +union { +struct { +u64 scsi_cmnd; +u64 scsi_serial; + } send_fcp; +struct { +u64 wwpn; +u32 d_id; +u32 port_handle; + } port; +struct { +u64 wwpn; +u64 fcp_lun; +u32 port_handle; +u32 lun_handle; + } unit; +struct { +u32 d_id; +u8 ls_code; + } send_els; + } data; +} __attribute__ ((packed)); + +struct zfcp_hba_dbf_record_status { +u8 failed; +u32 status_type; +u32 status_subtype; +struct fsf_queue_designator + queue_designator; +u32 payload_size; +#define ZFCP_DBF_UNSOL_PAYLOAD 80 +#define ZFCP_DBF_UNSOL_PAYLOAD_SENSE_DATA_AVAIL 32 +#define ZFCP_DBF_UNSOL_PAYLOAD_BIT_ERROR_THRESHOLD 56 +#define ZFCP_DBF_UNSOL_PAYLOAD_FEATURE_UPDATE_ALERT 2 * sizeof(u32) +u8 payload[ZFCP_DBF_UNSOL_PAYLOAD ]; +} __attribute__ ((packed)); + +struct zfcp_hba_dbf_record_qdio { +u32 status; +u32 qdio_error; +u32 siga_error; +u8 sbal_index; +u8 sbal_count; +} __attribute__ ((packed)); + +struct zfcp_hba_dbf_record { +u8 tag[ZFCP_DBF_TAG_SIZE ]; +u8 tag2[ZFCP_DBF_TAG_SIZE ]; +union { +struct zfcp_hba_dbf_record_response response; +struct zfcp_hba_dbf_record_status status; +struct zfcp_hba_dbf_record_qdio qdio; + } type; +} __attribute__ ((packed)); + +struct zfcp_san_dbf_record_ct { +union { +struct { +u16 cmd_req_code; +u8 revision; +u8 gs_type; +u8 gs_subtype; +u8 options; +u16 max_res_size; + } request; +struct { +u16 cmd_rsp_code; +u8 revision; +u8 reason_code; +u8 reason_code_expl; +u8 vendor_unique; + } response; + } type; +u32 payload_size; +#define ZFCP_DBF_CT_PAYLOAD 24 +u8 payload[ZFCP_DBF_CT_PAYLOAD ]; +} __attribute__ ((packed)); + +struct zfcp_san_dbf_record_els { +u8 ls_code; +u32 payload_size; +#define ZFCP_DBF_ELS_PAYLOAD 32 +#define ZFCP_DBF_ELS_MAX_PAYLOAD 1024 +u8 payload[ZFCP_DBF_ELS_PAYLOAD ]; +} __attribute__ ((packed)); + +struct zfcp_san_dbf_record { +u8 tag[ZFCP_DBF_TAG_SIZE ]; +u64 fsf_reqid; +u32 fsf_seqno; +u32 s_id; +u32 d_id; +union { +struct zfcp_san_dbf_record_ct ct; +struct zfcp_san_dbf_record_els els; + } type; +} __attribute__ ((packed)); + +struct zfcp_scsi_dbf_record { +u8 tag[ZFCP_DBF_TAG_SIZE ]; +u8 tag2[ZFCP_DBF_TAG_SIZE ]; +u32 scsi_id; +u32 scsi_lun; +u32 scsi_result; +u64 scsi_cmnd; +u64 scsi_serial; +#define ZFCP_DBF_SCSI_OPCODE 16 +u8 scsi_opcode[ZFCP_DBF_SCSI_OPCODE ]; +u8 scsi_retries; +u8 scsi_allowed; +u64 fsf_reqid; +u32 fsf_seqno; +u64 fsf_issued; +union { +u64 old_fsf_reqid; +struct { +u8 rsp_validity; +u8 rsp_scsi_status; +u32 rsp_resid; +u8 rsp_code; +#define ZFCP_DBF_SCSI_FCP_SNS_INFO 16 +#define ZFCP_DBF_SCSI_MAX_FCP_SNS_INFO 256 +u32 sns_info_len; +u8 sns_info[ZFCP_DBF_SCSI_FCP_SNS_INFO ]; + } fcp; + } type; +} __attribute__ ((packed)); + +#endif /* ZFCP_DBF_H */
drivers/s390/scsi/zfcp_def.h +1 -209
222 lines not on this page · raw message
PATCH 7/9 zfcp: Shorten excessive names in debug trace.
In reply to Christof SchmittFrom: Martin Peschke <[email protected]>
Saving on line breaks, improving readability, by shortening excessive function names and identifiers, by simplifying some functions call chains, and by simplifying nesting of some data structure.
--- drivers/s390/scsi/zfcp_dbf.c | 305 +++++++++++++++++++------------------------ drivers/s390/scsi/zfcp_dbf.h | 74 ++++------ 2 files changed, 170 insertions(+), 209 deletions(-)
drivers/s390/scsi/zfcp_dbf.c +135 -170
@@ -144,12 +144,12 @@ void zfcp_hba_dbf_event_fsf_response(strstruct zfcp_unit *unit;struct zfcp_send_els *send_els;struct zfcp_hba_dbf_record *rec = &adapter->hba_dbf_buf; -struct zfcp_hba_dbf_record_response *response = &rec->type.response; +struct zfcp_hba_dbf_record_response *response = &rec->u.response;int level;unsigned long flags;spin_lock_irqsave (&adapter->hba_dbf_lock, flags); -memset (rec,0 ,sizeof (struct zfcp_hba_dbf_record )); +memset (rec,0 ,sizeof (*rec));strncpy (rec->tag,"resp" ,ZFCP_DBF_TAG_SIZE ); if ((qtcb->prefix.prot_status != FSF_PROT_GOOD) &&
@@ -193,11 +193,9 @@ void zfcp_hba_dbf_event_fsf_response(strif (fsf_req->status &ZFCP_STATUS_FSFREQ_TASK_MANAGEMENT )break ; scsi_cmnd = (struct scsi_cmnd *)fsf_req->data; -if (scsi_cmnd !=NULL ) { - response->data.send_fcp.scsi_cmnd - = (unsigned long )scsi_cmnd; - response->data.send_fcp.scsi_serial - = scsi_cmnd->serial_number; +if (scsi_cmnd) { + response->u.fcp.cmnd = (unsigned long )scsi_cmnd; + response->u.fcp.serial = scsi_cmnd->serial_number; }break ;
@@ -205,25 +203,25 @@ void zfcp_hba_dbf_event_fsf_response(strcase FSF_QTCB_CLOSE_PORT :case FSF_QTCB_CLOSE_PHYSICAL_PORT : port = (struct zfcp_port *)fsf_req->data; - response->data.port.wwpn = port->wwpn; - response->data.port.d_id = port->d_id; - response->data.port.port_handle = qtcb->header.port_handle; + response->u.port.wwpn = port->wwpn; + response->u.port.d_id = port->d_id; + response->u.port.port_handle = qtcb->header.port_handle;break ;case FSF_QTCB_OPEN_LUN :case FSF_QTCB_CLOSE_LUN : unit = (struct zfcp_unit *)fsf_req->data; port = unit->port; - response->data.unit.wwpn = port->wwpn; - response->data.unit.fcp_lun = unit->fcp_lun; - response->data.unit.port_handle = qtcb->header.port_handle; - response->data.unit.lun_handle = qtcb->header.lun_handle; + response->u.unit.wwpn = port->wwpn; + response->u.unit.fcp_lun = unit->fcp_lun; + response->u.unit.port_handle = qtcb->header.port_handle; + response->u.unit.lun_handle = qtcb->header.lun_handle;break ;case FSF_QTCB_SEND_ELS : send_els = (struct zfcp_send_els *)fsf_req->data; - response->data.send_els.d_id = qtcb->bottom.support.d_id; - response->data.send_els.ls_code = send_els->ls_code >>24 ; + response->u.els.d_id = qtcb->bottom.support.d_id; + response->u.els.ls_code = send_els->ls_code >>24 ;break ;case FSF_QTCB_ABORT_FCP_CMND :
@@ -235,8 +233,7 @@ void zfcp_hba_dbf_event_fsf_response(strbreak ; } -debug_event (adapter->hba_dbf, level, - rec,sizeof (struct zfcp_hba_dbf_record )); +debug_event (adapter->hba_dbf, level, rec,sizeof (*rec));/* have fcp channel microcode fixed to use as little as possible */ if (fsf_req->fsf_command !=FSF_QTCB_FCP_CMND ) {
@@ -259,26 +256,26 @@ zfcp_hba_dbf_event_fsf_unsol(const charunsigned long flags;spin_lock_irqsave (&adapter->hba_dbf_lock, flags); -memset (rec,0 ,sizeof (struct zfcp_hba_dbf_record )); +memset (rec,0 ,sizeof (*rec));strncpy (rec->tag,"stat" ,ZFCP_DBF_TAG_SIZE );strncpy (rec->tag2, tag,ZFCP_DBF_TAG_SIZE ); - rec->type.status.failed = adapter->status_read_failed; + rec->u.status.failed = adapter->status_read_failed;if (status_buffer !=NULL ) { - rec->type.status.status_type = status_buffer->status_type; - rec->type.status.status_subtype = status_buffer->status_subtype; -memcpy (&rec->type.status.queue_designator, + rec->u.status.status_type = status_buffer->status_type; + rec->u.status.status_subtype = status_buffer->status_subtype; +memcpy (&rec->u.status.queue_designator, &status_buffer->queue_designator,sizeof (struct fsf_queue_designator ));switch (status_buffer->status_type) {case FSF_STATUS_READ_SENSE_DATA_AVAIL : - rec->type.status.payload_size = + rec->u.status.payload_size =ZFCP_DBF_UNSOL_PAYLOAD_SENSE_DATA_AVAIL ;break ;case FSF_STATUS_READ_BIT_ERROR_THRESHOLD : - rec->type.status.payload_size = + rec->u.status.payload_size =ZFCP_DBF_UNSOL_PAYLOAD_BIT_ERROR_THRESHOLD ;break ;
@@ -286,22 +283,21 @@ zfcp_hba_dbf_event_fsf_unsol(const charswitch (status_buffer->status_subtype) {case FSF_STATUS_READ_SUB_NO_PHYSICAL_LINK :case FSF_STATUS_READ_SUB_FDISC_FAILED : - rec->type.status.payload_size = + rec->u.status.payload_size =sizeof (struct fsf_link_down_info ); }break ;case FSF_STATUS_READ_FEATURE_UPDATE_ALERT : - rec->type.status.payload_size = + rec->u.status.payload_size =ZFCP_DBF_UNSOL_PAYLOAD_FEATURE_UPDATE_ALERT ;break ; } -memcpy (&rec->type.status.payload, - &status_buffer->payload, rec->type.status.payload_size); +memcpy (&rec->u.status.payload, + &status_buffer->payload, rec->u.status.payload_size); } -debug_event (adapter->hba_dbf,2 , - rec,sizeof (struct zfcp_hba_dbf_record )); +debug_event (adapter->hba_dbf,2 , rec,sizeof (*rec));spin_unlock_irqrestore (&adapter->hba_dbf_lock, flags); }
@@ -310,19 +306,18 @@ zfcp_hba_dbf_event_qdio(struct zfcp_adap unsigned int qdio_error, unsigned int siga_error, int sbal_index, int sbal_count) { - struct zfcp_hba_dbf_record *rec = &adapter->hba_dbf_buf; + struct zfcp_hba_dbf_record *r = &adapter->hba_dbf_buf;unsigned long flags;spin_lock_irqsave (&adapter->hba_dbf_lock, flags); -memset (rec,0 ,sizeof (struct zfcp_hba_dbf_record )); -strncpy (rec->tag,"qdio" ,ZFCP_DBF_TAG_SIZE ); - rec->type.qdio.status = status; - rec->type.qdio.qdio_error = qdio_error; - rec->type.qdio.siga_error = siga_error; - rec->type.qdio.sbal_index = sbal_index; - rec->type.qdio.sbal_count = sbal_count; -debug_event (adapter->hba_dbf,0 , - rec,sizeof (struct zfcp_hba_dbf_record )); +memset (r,0 ,sizeof (*r)); +strncpy (r->tag,"qdio" ,ZFCP_DBF_TAG_SIZE ); + r->u.qdio.status = status; + r->u.qdio.qdio_error = qdio_error; + r->u.qdio.siga_error = siga_error; + r->u.qdio.sbal_index = sbal_index; + r->u.qdio.sbal_count = sbal_count; +debug_event (adapter->hba_dbf,0 , r,sizeof (*r));spin_unlock_irqrestore (&adapter->hba_dbf_lock, flags); }
@@ -352,34 +347,29 @@ static void zfcp_hba_dbf_view_response(ccase FSF_QTCB_FCP_CMND :if (r->fsf_req_status &ZFCP_STATUS_FSFREQ_TASK_MANAGEMENT )break ; -zfcp_dbf_out (p,"scsi_cmnd" ,"0x%0Lx" , - r->data.send_fcp.scsi_cmnd); -zfcp_dbf_out (p,"scsi_serial" ,"0x%016Lx" , - r->data.send_fcp.scsi_serial); +zfcp_dbf_out (p,"scsi_cmnd" ,"0x%0Lx" , r->u.fcp.cmnd); +zfcp_dbf_out (p,"scsi_serial" ,"0x%016Lx" , r->u.fcp.serial);break ;case FSF_QTCB_OPEN_PORT_WITH_DID :case FSF_QTCB_CLOSE_PORT :case FSF_QTCB_CLOSE_PHYSICAL_PORT : -zfcp_dbf_out (p,"wwpn" ,"0x%016Lx" , r->data.port.wwpn); -zfcp_dbf_out (p,"d_id" ,"0x%06x" , r->data.port.d_id); -zfcp_dbf_out (p,"port_handle" ,"0x%08x" , - r->data.port.port_handle); +zfcp_dbf_out (p,"wwpn" ,"0x%016Lx" , r->u.port.wwpn); +zfcp_dbf_out (p,"d_id" ,"0x%06x" , r->u.port.d_id); +zfcp_dbf_out (p,"port_handle" ,"0x%08x" , r->u.port.port_handle);break ;case FSF_QTCB_OPEN_LUN :case FSF_QTCB_CLOSE_LUN : -zfcp_dbf_out (p,"wwpn" ,"0x%016Lx" , r->data.unit.wwpn); -zfcp_dbf_out (p,"fcp_lun" ,"0x%016Lx" , r->data.unit.fcp_lun); -zfcp_dbf_out (p,"port_handle" ,"0x%08x" , - r->data.unit.port_handle); -zfcp_dbf_out (p,"lun_handle" ,"0x%08x" , - r->data.unit.lun_handle); +zfcp_dbf_out (p,"wwpn" ,"0x%016Lx" , r->u.unit.wwpn); +zfcp_dbf_out (p,"fcp_lun" ,"0x%016Lx" , r->u.unit.fcp_lun); +zfcp_dbf_out (p,"port_handle" ,"0x%08x" , r->u.unit.port_handle); +zfcp_dbf_out (p,"lun_handle" ,"0x%08x" , r->u.unit.lun_handle);break ;case FSF_QTCB_SEND_ELS : -zfcp_dbf_out (p,"d_id" ,"0x%06x" , r->data.send_els.d_id); -zfcp_dbf_out (p,"ls_code" ,"0x%02x" , r->data.send_els.ls_code); +zfcp_dbf_out (p,"d_id" ,"0x%06x" , r->u.els.d_id); +zfcp_dbf_out (p,"ls_code" ,"0x%02x" , r->u.els.ls_code);break ;case FSF_QTCB_ABORT_FCP_CMND :
@@ -428,11 +418,11 @@ static int zfcp_hba_dbf_view_format(debuzfcp_dbf_tag (&p,"tag2" , r->tag2);if (strncmp (r->tag,"resp" ,ZFCP_DBF_TAG_SIZE ) ==0 ) -zfcp_hba_dbf_view_response (&p, &r->type.response); +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->type.status); +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->type.qdio); +zfcp_hba_dbf_view_qdio (&p, &r->u.qdio); p +=sprintf (p,"\n" );return p - out_buf;
@@ -823,57 +813,34 @@ void zfcp_rec_dbf_event_action(u8 id2, sspin_unlock_irqrestore (&adapter->rec_dbf_lock, flags); } -static void -_zfcp_san_dbf_event_common_ct (const char *tag,struct zfcp_fsf_req *fsf_req, -u32 s_id,u32 d_id,void *buffer,int buflen) -{ -struct zfcp_send_ct *send_ct = (struct zfcp_send_ct *)fsf_req->data; -struct zfcp_port *port = send_ct->port; -struct zfcp_adapter *adapter = port->adapter; -struct ct_hdr *header = (struct ct_hdr *)buffer; -struct zfcp_san_dbf_record *rec = &adapter->san_dbf_buf; -struct zfcp_san_dbf_record_ct *ct = &rec->type.ct; -unsigned long flags; - -spin_lock_irqsave (&adapter->san_dbf_lock, flags); -memset (rec,0 ,sizeof (struct zfcp_san_dbf_record )); -strncpy (rec->tag, tag,ZFCP_DBF_TAG_SIZE ); - rec->fsf_reqid = (unsigned long )fsf_req; - rec->fsf_seqno = fsf_req->seq_no; - rec->s_id = s_id; - rec->d_id = d_id; -if (strncmp (tag,"octc" ,ZFCP_DBF_TAG_SIZE ) ==0 ) { - ct->type.request.cmd_req_code = header->cmd_rsp_code; - ct->type.request.revision = header->revision; - ct->type.request.gs_type = header->gs_type; - ct->type.request.gs_subtype = header->gs_subtype; - ct->type.request.options = header->options; - ct->type.request.max_res_size = header->max_res_size; - }else if (strncmp (tag,"rctc" ,ZFCP_DBF_TAG_SIZE ) ==0 ) { - ct->type.response.cmd_rsp_code = header->cmd_rsp_code; - ct->type.response.revision = header->revision; - ct->type.response.reason_code = header->reason_code; - ct->type.response.reason_code_expl = header->reason_code_expl; - ct->type.response.vendor_unique = header->vendor_unique; - } - ct->payload_size = -min (buflen - (int )sizeof (struct ct_hdr ),ZFCP_DBF_CT_PAYLOAD ); -memcpy (ct->payload, buffer +sizeof (struct ct_hdr ), ct->payload_size); -debug_event (adapter->san_dbf,3 , - rec,sizeof (struct zfcp_san_dbf_record )); -spin_unlock_irqrestore (&adapter->san_dbf_lock, flags); -} -void zfcp_san_dbf_event_ct_request (struct zfcp_fsf_req *fsf_req) {struct zfcp_send_ct *ct = (struct zfcp_send_ct *)fsf_req->data;struct zfcp_port *port = ct->port;struct zfcp_adapter *adapter = port->adapter; +struct ct_hdr *hdr =zfcp_sg_to_address (ct->req); +struct zfcp_san_dbf_record *r = &adapter->san_dbf_buf; +struct zfcp_san_dbf_record_ct_request *oct = &r->u.ct_req; +unsigned long flags; -_zfcp_san_dbf_event_common_ct ("octc" , fsf_req, -fc_host_port_id (adapter->scsi_host), - port->d_id,zfcp_sg_to_address (ct->req), - ct->req->length); +spin_lock_irqsave (&adapter->san_dbf_lock, flags); +memset (r,0 ,sizeof (*r)); +strncpy (r->tag,"octc" ,ZFCP_DBF_TAG_SIZE ); + r->fsf_reqid = (unsigned long )fsf_req; + r->fsf_seqno = fsf_req->seq_no; + r->s_id =fc_host_port_id (adapter->scsi_host); + r->d_id = port->d_id; + oct->cmd_req_code = hdr->cmd_rsp_code; + oct->revision = hdr->revision; + oct->gs_type = hdr->gs_type; + oct->gs_subtype = hdr->gs_subtype; + oct->options = hdr->options; + oct->max_res_size = hdr->max_res_size; + oct->len =min ((int )ct->req->length - (int )sizeof (struct ct_hdr ), +ZFCP_DBF_CT_PAYLOAD ); +memcpy (oct->payload, (void *)hdr +sizeof (struct ct_hdr ), oct->len); +debug_event (adapter->san_dbf,3 , r,sizeof (*r)); +spin_unlock_irqrestore (&adapter->san_dbf_lock, flags); }void zfcp_san_dbf_event_ct_response (struct zfcp_fsf_req *fsf_req)
@@ -881,11 +848,28 @@ void zfcp_san_dbf_event_ct_response(strustruct zfcp_send_ct *ct = (struct zfcp_send_ct *)fsf_req->data;struct zfcp_port *port = ct->port;struct zfcp_adapter *adapter = port->adapter; +struct ct_hdr *hdr =zfcp_sg_to_address (ct->resp); +struct zfcp_san_dbf_record *r = &adapter->san_dbf_buf; +struct zfcp_san_dbf_record_ct_response *rct = &r->u.ct_resp; +unsigned long flags; -_zfcp_san_dbf_event_common_ct ("rctc" , fsf_req, port->d_id, -fc_host_port_id (adapter->scsi_host), -zfcp_sg_to_address (ct->resp), - ct->resp->length); +spin_lock_irqsave (&adapter->san_dbf_lock, flags); +memset (r,0 ,sizeof (*r)); +strncpy (r->tag,"rctc" ,ZFCP_DBF_TAG_SIZE ); + r->fsf_reqid = (unsigned long )fsf_req; + r->fsf_seqno = fsf_req->seq_no; + r->s_id = port->d_id; + r->d_id =fc_host_port_id (adapter->scsi_host); + rct->cmd_rsp_code = hdr->cmd_rsp_code; + rct->revision = hdr->revision; + rct->reason_code = hdr->reason_code; + rct->expl = hdr->reason_code_expl; + rct->vendor_unique = hdr->vendor_unique; + rct->len =min ((int )ct->resp->length - (int )sizeof (struct ct_hdr ), +ZFCP_DBF_CT_PAYLOAD ); +memcpy (rct->payload, (void *)hdr +sizeof (struct ct_hdr ), rct->len); +debug_event (adapter->san_dbf,3 , r,sizeof (*r)); +spin_unlock_irqrestore (&adapter->san_dbf_lock, flags); } static void
@@ -898,13 +882,13 @@ _zfcp_san_dbf_event_common_els(const chaunsigned long flags;spin_lock_irqsave (&adapter->san_dbf_lock, flags); -memset (rec,0 ,sizeof (struct zfcp_san_dbf_record )); +memset (rec,0 ,sizeof (*rec));strncpy (rec->tag, tag,ZFCP_DBF_TAG_SIZE ); rec->fsf_reqid = (unsigned long )fsf_req; rec->fsf_seqno = fsf_req->seq_no; rec->s_id = s_id; rec->d_id = d_id; - rec->type.els.ls_code = ls_code; + rec->u.els.ls_code = ls_code;debug_event (adapter->san_dbf, level, rec,sizeof (*rec));zfcp_dbf_hexdump (adapter->san_dbf, rec,sizeof (*rec), level, buffer,min (buflen,ZFCP_DBF_ELS_MAX_PAYLOAD ));
@@ -967,42 +951,33 @@ zfcp_san_dbf_view_format(debug_info_t *zfcp_dbf_out (&p,"d_id" ,"0x%06x" , r->d_id);if (strncmp (r->tag,"octc" ,ZFCP_DBF_TAG_SIZE ) ==0 ) { -/* FIXME: struct zfcp_dbf_ct_req *ct = ...; */ -zfcp_dbf_out (&p,"cmd_req_code" ,"0x%04x" , - r->type.ct.type.request.cmd_req_code); -zfcp_dbf_out (&p,"revision" ,"0x%02x" , - r->type.ct.type.request.revision); -zfcp_dbf_out (&p,"gs_type" ,"0x%02x" , - r->type.ct.type.request.gs_type); -zfcp_dbf_out (&p,"gs_subtype" ,"0x%02x" , - r->type.ct.type.request.gs_subtype); -zfcp_dbf_out (&p,"options" ,"0x%02x" , - r->type.ct.type.request.options); -zfcp_dbf_out (&p,"max_res_size" ,"0x%04x" , - r->type.ct.type.request.max_res_size); - total = r->type.ct.payload_size; - buffer = r->type.ct.payload; +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 ) { -zfcp_dbf_out (&p,"cmd_rsp_code" ,"0x%04x" , - r->type.ct.type.response.cmd_rsp_code); -zfcp_dbf_out (&p,"revision" ,"0x%02x" , - r->type.ct.type.response.revision); -zfcp_dbf_out (&p,"reason_code" ,"0x%02x" , - r->type.ct.type.response.reason_code); -zfcp_dbf_out (&p,"reason_code_expl" ,"0x%02x" , - r->type.ct.type.response.reason_code_expl); -zfcp_dbf_out (&p,"vendor_unique" ,"0x%02x" , - r->type.ct.type.response.vendor_unique); - total = r->type.ct.payload_size; - buffer = r->type.ct.payload; +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 ) { -zfcp_dbf_out (&p,"ls_code" ,"0x%02x" , r->type.els.ls_code); - total = r->type.els.payload_size; - buffer = r->type.els.payload; +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 ); }
@@ -1038,7 +1013,7 @@ _zfcp_scsi_dbf_event_common(const char *spin_lock_irqsave (&adapter->scsi_dbf_lock, flags); do { - memset(rec, 0, sizeof(struct zfcp_scsi_dbf_record)); + memset(rec, 0, sizeof(*rec)); if (offset == 0) { strncpy(rec->tag, tag, ZFCP_DBF_TAG_SIZE); strncpy(rec->tag2, tag2, ZFCP_DBF_TAG_SIZE);
@@ -1064,20 +1039,16 @@ _zfcp_scsi_dbf_event_common(const char * fcp_sns_info =zfcp_get_fcp_sns_info_ptr (fcp_rsp); - rec->type.fcp.rsp_validity = - fcp_rsp->validity.value; - rec->type.fcp.rsp_scsi_status = - fcp_rsp->scsi_status; - rec->type.fcp.rsp_resid = fcp_rsp->fcp_resid; + rec->rsp_validity = fcp_rsp->validity.value; + rec->rsp_scsi_status = fcp_rsp->scsi_status; + rec->rsp_resid = fcp_rsp->fcp_resid;if (fcp_rsp->validity.bits.fcp_rsp_len_valid) - rec->type.fcp.rsp_code = - *(fcp_rsp_info +3 ); + rec->rsp_code = *(fcp_rsp_info +3 );if (fcp_rsp->validity.bits.fcp_sns_len_valid) { buflen =min ((int )fcp_rsp->fcp_sns_len,ZFCP_DBF_SCSI_MAX_FCP_SNS_INFO ); - rec->type.fcp.sns_info_len = buflen; -memcpy (rec->type.fcp.sns_info, - fcp_sns_info, + rec->sns_info_len = buflen; +memcpy (rec->sns_info, fcp_sns_info,min (buflen,ZFCP_DBF_SCSI_FCP_SNS_INFO )); offset += min(buflen,
@@ -1088,7 +1059,7 @@ _zfcp_scsi_dbf_event_common(const char * rec->fsf_seqno = fsf_req->seq_no; rec->fsf_issued = fsf_req->issued; } - rec->type.old_fsf_reqid = old_req_id; + rec->old_fsf_reqid = old_req_id; }else {strncpy (dump->tag,"dump" ,ZFCP_DBF_TAG_SIZE ); dump->total_size = buflen;
@@ -1100,8 +1071,7 @@ _zfcp_scsi_dbf_event_common(const char *memcpy (dump->data, fcp_sns_info + offset, dump->size); offset += dump->size; } -debug_event (adapter->scsi_dbf, level, - rec,sizeof (struct zfcp_scsi_dbf_record )); +debug_event (adapter->scsi_dbf, level, rec,sizeof (*rec)); }while (offset < buflen);spin_unlock_irqrestore (&adapter->scsi_dbf_lock, flags); }
@@ -1159,28 +1129,23 @@ zfcp_scsi_dbf_view_format(debug_info_t *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->type.old_fsf_reqid); +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->type.fcp.rsp_validity); -zfcp_dbf_out (&p,"fcp_rsp_scsi_status" , -"0x%02x" , r->type.fcp.rsp_scsi_status); -zfcp_dbf_out (&p,"fcp_rsp_resid" ,"0x%08x" , - r->type.fcp.rsp_resid); -zfcp_dbf_out (&p,"fcp_rsp_code" ,"0x%08x" , - r->type.fcp.rsp_code); -zfcp_dbf_out (&p,"fcp_sns_info_len" ,"0x%08x" , - r->type.fcp.sns_info_len); -zfcp_dbf_outd (&p,"fcp_sns_info" , r->type.fcp.sns_info, -min ((int )r->type.fcp.sns_info_len, +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->type.fcp.sns_info_len); + r->sns_info_len); } p +=sprintf (p,"\n" );return p - out_buf;
drivers/s390/scsi/zfcp_dbf.h +35 -39
115 lines not on this page · raw message
PATCH 8/9 zfcp: Cleanup line breaks in debug trace.
In reply to Christof SchmittFrom: Martin Peschke <[email protected]>
Remove line breaks that do not conform to coding style.
--- drivers/s390/scsi/zfcp_dbf.c | 123 +++++++++++++++++++------------------------ 1 file changed, 55 insertions(+), 68 deletions(-)
drivers/s390/scsi/zfcp_dbf.c +55 -68
@@ -110,9 +110,8 @@ static void zfcp_dbf_outd(char **p, cons *p +=sprintf (*p,"\n" ); } -static int -zfcp_dbf_view_header (debug_info_t * id,struct debug_view *view,int area, -debug_entry_t * entry,char *out_buf) +static int zfcp_dbf_view_header (debug_info_t *id,struct debug_view *view, +int area,debug_entry_t *entry,char *out_buf) {struct zfcp_dbf_dump *dump = (struct zfcp_dbf_dump *)DEBUG_DATA (entry);struct timespec t;
@@ -137,7 +136,7 @@ void zfcp_hba_dbf_event_fsf_response(strstruct zfcp_adapter *adapter = fsf_req->adapter;struct fsf_qtcb *qtcb = fsf_req->qtcb;union fsf_prot_status_qual *prot_status_qual = - &qtcb->prefix.prot_status_qual; + &qtcb->prefix.prot_status_qual;union fsf_status_qual *fsf_status_qual = &qtcb->header.fsf_status_qual;struct scsi_cmnd *scsi_cmnd;struct zfcp_port *port;
@@ -248,9 +247,8 @@ void zfcp_hba_dbf_event_fsf_response(strspin_unlock_irqrestore (&adapter->hba_dbf_lock, flags); } -void -zfcp_hba_dbf_event_fsf_unsol (const char *tag,struct zfcp_adapter *adapter, -struct fsf_status_read_buffer *status_buffer) +void zfcp_hba_dbf_event_fsf_unsol (const char *tag,struct zfcp_adapter *adapter, +struct fsf_status_read_buffer *status_buffer) {struct zfcp_hba_dbf_record *rec = &adapter->hba_dbf_buf;unsigned long flags;
@@ -301,10 +299,9 @@ zfcp_hba_dbf_event_fsf_unsol(const charspin_unlock_irqrestore (&adapter->hba_dbf_lock, flags); } -void -zfcp_hba_dbf_event_qdio (struct zfcp_adapter *adapter,unsigned int status, -unsigned int qdio_error,unsigned int siga_error, -int sbal_index,int sbal_count) +void zfcp_hba_dbf_event_qdio (struct zfcp_adapter *adapter,unsigned int status, +unsigned int qdio_error,unsigned int siga_error, +int sbal_index,int sbal_count) {struct zfcp_hba_dbf_record *r = &adapter->hba_dbf_buf;unsigned long flags;
@@ -872,10 +869,10 @@ void zfcp_san_dbf_event_ct_response(struspin_unlock_irqrestore (&adapter->san_dbf_lock, flags); } -static void -_zfcp_san_dbf_event_common_els (const char *tag,int level, -struct zfcp_fsf_req *fsf_req,u32 s_id, -u32 d_id,u8 ls_code,void *buffer,int buflen) +static void zfcp_san_dbf_event_els (const char *tag,int level, +struct zfcp_fsf_req *fsf_req,u32 s_id, +u32 d_id,u8 ls_code,void *buffer, +int buflen) {struct zfcp_adapter *adapter = fsf_req->adapter;struct zfcp_san_dbf_record *rec = &adapter->san_dbf_buf;
@@ -899,42 +896,39 @@ void zfcp_san_dbf_event_els_request(stru {struct zfcp_send_els *els = (struct zfcp_send_els *)fsf_req->data; -_zfcp_san_dbf_event_common_els ("oels" ,2 , fsf_req, -fc_host_port_id (els->adapter->scsi_host), - els->d_id, - *(u8 *)zfcp_sg_to_address (els->req), -zfcp_sg_to_address (els->req), - els->req->length); +zfcp_san_dbf_event_els ("oels" ,2 , fsf_req, +fc_host_port_id (els->adapter->scsi_host), + els->d_id, *(u8 *)zfcp_sg_to_address (els->req), +zfcp_sg_to_address (els->req), els->req->length); }void zfcp_san_dbf_event_els_response (struct zfcp_fsf_req *fsf_req) {struct zfcp_send_els *els = (struct zfcp_send_els *)fsf_req->data; -_zfcp_san_dbf_event_common_els ("rels" ,2 , fsf_req, els->d_id, -fc_host_port_id (els->adapter->scsi_host), - *(u8 *)zfcp_sg_to_address (els->req), -zfcp_sg_to_address (els->resp), - els->resp->length); +zfcp_san_dbf_event_els ("rels" ,2 , fsf_req, els->d_id, +fc_host_port_id (els->adapter->scsi_host), + *(u8 *)zfcp_sg_to_address (els->req), +zfcp_sg_to_address (els->resp), + els->resp->length); }void zfcp_san_dbf_event_incoming_els (struct zfcp_fsf_req *fsf_req) {struct zfcp_adapter *adapter = fsf_req->adapter; -struct fsf_status_read_buffer *status_buffer = - (struct fsf_status_read_buffer *)fsf_req->data; -int length = (int )status_buffer->length - - (int )((void *)&status_buffer->payload - (void *)status_buffer); - -_zfcp_san_dbf_event_common_els ("iels" ,1 , fsf_req, status_buffer->d_id, -fc_host_port_id (adapter->scsi_host), - *(u8 *) status_buffer->payload, - (void *)status_buffer->payload, length); +struct fsf_status_read_buffer *buf = + (struct fsf_status_read_buffer *)fsf_req->data; +int length = (int )buf->length - + (int )((void *)&buf->payload - (void *)buf); + +zfcp_san_dbf_event_els ("iels" ,1 , fsf_req, buf->d_id, +fc_host_port_id (adapter->scsi_host), + *(u8 *)buf->payload, (void *)buf->payload, + length); } -static int -zfcp_san_dbf_view_format (debug_info_t * id,struct debug_view *view, -char *out_buf,const char *in_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 ;
@@ -997,12 +991,11 @@ static struct debug_view zfcp_san_dbf_vi NULL }; -static void -_zfcp_scsi_dbf_event_common (const char *tag,const char *tag2,int level, -struct zfcp_adapter *adapter, -struct scsi_cmnd *scsi_cmnd, -struct zfcp_fsf_req *fsf_req, -unsigned long old_req_id) +static void zfcp_scsi_dbf_event (const char *tag,const char *tag2,int level, +struct zfcp_adapter *adapter, +struct scsi_cmnd *scsi_cmnd, +struct zfcp_fsf_req *fsf_req, +unsigned long old_req_id) {struct zfcp_scsi_dbf_record *rec = &adapter->scsi_dbf_buf;struct zfcp_dbf_dump *dump = (struct zfcp_dbf_dump *)rec;
@@ -1076,39 +1069,33 @@ _zfcp_scsi_dbf_event_common(const char *spin_unlock_irqrestore (&adapter->scsi_dbf_lock, flags); } -void -zfcp_scsi_dbf_event_result (const char *tag,int level, -struct zfcp_adapter *adapter, -struct scsi_cmnd *scsi_cmnd, -struct zfcp_fsf_req *fsf_req) +void zfcp_scsi_dbf_event_result (const char *tag,int level, +struct zfcp_adapter *adapter, +struct scsi_cmnd *scsi_cmnd, +struct zfcp_fsf_req *fsf_req) { -_zfcp_scsi_dbf_event_common ("rslt" , tag, level, - adapter, scsi_cmnd, fsf_req,0 ); +zfcp_scsi_dbf_event ("rslt" , tag, level, adapter, scsi_cmnd, fsf_req,0 ); } -void -zfcp_scsi_dbf_event_abort (const char *tag,struct zfcp_adapter *adapter, -struct scsi_cmnd *scsi_cmnd, -struct zfcp_fsf_req *new_fsf_req, -unsigned long old_req_id) +void zfcp_scsi_dbf_event_abort (const char *tag,struct zfcp_adapter *adapter, +struct scsi_cmnd *scsi_cmnd, +struct zfcp_fsf_req *new_fsf_req, +unsigned long old_req_id) { -_zfcp_scsi_dbf_event_common ("abrt" , tag,1 , - adapter, scsi_cmnd, new_fsf_req, old_req_id); +zfcp_scsi_dbf_event ("abrt" , tag,1 , adapter, scsi_cmnd, new_fsf_req, + old_req_id); } -void -zfcp_scsi_dbf_event_devreset (const char *tag,u8 flag,struct zfcp_unit *unit, -struct scsi_cmnd *scsi_cmnd) +void zfcp_scsi_dbf_event_devreset (const char *tag,u8 flag, +struct zfcp_unit *unit, +struct scsi_cmnd *scsi_cmnd) { -struct zfcp_adapter *adapter = unit->port->adapter; - -_zfcp_scsi_dbf_event_common (flag ==FCP_TARGET_RESET ?"trst" :"lrst" , - tag,1 , adapter, scsi_cmnd,NULL ,0 ); +zfcp_scsi_dbf_event (flag ==FCP_TARGET_RESET ?"trst" :"lrst" , tag,1 , + unit->port->adapter, scsi_cmnd,NULL ,0 ); } -static int -zfcp_scsi_dbf_view_format (debug_info_t * id,struct debug_view *view, -char *out_buf,const char *in_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;
PATCH 9/9 zfcp: Add docbook comments to debug trace.
In reply to Christof SchmittFrom: Martin Peschke <[email protected]>
Add missing docbook-comments for functions forming zfcp's internal trace API.
--- drivers/s390/scsi/zfcp_dbf.c | 62 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+)
drivers/s390/scsi/zfcp_dbf.c +62 -0
@@ -131,6 +131,10 @@ static int zfcp_dbf_view_header(debug_inreturn p - out_buf; } +/** +* zfcp_hba_dbf_event_fsf_response - trace event for request completion +* @fsf_req: request that has been completed +*/ void zfcp_hba_dbf_event_fsf_response (struct zfcp_fsf_req *fsf_req) {struct zfcp_adapter *adapter = fsf_req->adapter;
@@ -247,6 +251,12 @@ void zfcp_hba_dbf_event_fsf_response(strspin_unlock_irqrestore (&adapter->hba_dbf_lock, flags); } +/** +* zfcp_hba_dbf_event_fsf_unsol - trace event for an unsolicited status buffer +* @tag: tag indicating which kind of unsolicited status has been received +* @adapter: adapter that has issued the unsolicited status buffer +* @status_buffer: buffer containing payload of unsolicited status +*/ void zfcp_hba_dbf_event_fsf_unsol (const char *tag,struct zfcp_adapter *adapter,struct fsf_status_read_buffer *status_buffer) {
@@ -299,6 +309,15 @@ void zfcp_hba_dbf_event_fsf_unsol(constspin_unlock_irqrestore (&adapter->hba_dbf_lock, flags); } +/** +* zfcp_hba_dbf_event_qdio - trace event for QDIO related failure +* @adapter: adapter affected by this QDIO related event +* @status: as passed by qdio module +* @qdio_error: as passed by qdio module +* @siga_error: as passed by qdio module +* @sbal_index: first buffer with error condition, as passed by qdio module +* @sbal_count: number of buffers affected, as passed by qdio module +*/ void zfcp_hba_dbf_event_qdio (struct zfcp_adapter *adapter,unsigned int status,unsigned int qdio_error,unsigned int siga_error,int sbal_index,int sbal_count)
@@ -810,6 +829,10 @@ void zfcp_rec_dbf_event_action(u8 id2, sspin_unlock_irqrestore (&adapter->rec_dbf_lock, flags); } +/** +* zfcp_san_dbf_event_ct_request - trace event for issued CT request +* @fsf_req: request containing issued CT data +*/ void zfcp_san_dbf_event_ct_request (struct zfcp_fsf_req *fsf_req) {struct zfcp_send_ct *ct = (struct zfcp_send_ct *)fsf_req->data;
@@ -840,6 +863,10 @@ void zfcp_san_dbf_event_ct_request(strucspin_unlock_irqrestore (&adapter->san_dbf_lock, flags); } +/** +* zfcp_san_dbf_event_ct_response - trace event for completion of CT request +* @fsf_req: request containing CT response +*/ void zfcp_san_dbf_event_ct_response (struct zfcp_fsf_req *fsf_req) {struct zfcp_send_ct *ct = (struct zfcp_send_ct *)fsf_req->data;
@@ -892,6 +919,10 @@ static void zfcp_san_dbf_event_els(constspin_unlock_irqrestore (&adapter->san_dbf_lock, flags); } +/** +* zfcp_san_dbf_event_els_request - trace event for issued ELS +* @fsf_req: request containing issued ELS +*/ void zfcp_san_dbf_event_els_request (struct zfcp_fsf_req *fsf_req) {struct zfcp_send_els *els = (struct zfcp_send_els *)fsf_req->data;
@@ -902,6 +933,10 @@ void zfcp_san_dbf_event_els_request(stru zfcp_sg_to_address(els->req), els->req->length); } +/** +* zfcp_san_dbf_event_els_response - trace event for completed ELS +* @fsf_req: request containing ELS response +*/ void zfcp_san_dbf_event_els_response (struct zfcp_fsf_req *fsf_req) {struct zfcp_send_els *els = (struct zfcp_send_els *)fsf_req->data;
@@ -913,6 +948,10 @@ void zfcp_san_dbf_event_els_response(str els->resp->length); } +/** +* zfcp_san_dbf_event_incoming_els - trace event for incomig ELS +* @fsf_req: request containing unsolicited status buffer with incoming ELS +*/ void zfcp_san_dbf_event_incoming_els (struct zfcp_fsf_req *fsf_req) {struct zfcp_adapter *adapter = fsf_req->adapter;
@@ -1069,6 +1108,14 @@ static void zfcp_scsi_dbf_event(const chspin_unlock_irqrestore (&adapter->scsi_dbf_lock, flags); } +/** +* zfcp_scsi_dbf_event_result - trace event for SCSI command completion +* @tag: tag indicating success or failure of SCSI command +* @level: trace level applicable for this event +* @adapter: adapter that has been used to issue the SCSI command +* @scsi_cmnd: SCSI command pointer +* @fsf_req: request used to issue SCSI command (might be NULL) +*/ void zfcp_scsi_dbf_event_result(const char *tag, int level, struct zfcp_adapter *adapter, struct scsi_cmnd *scsi_cmnd,
@@ -1077,6 +1124,14 @@ void zfcp_scsi_dbf_event_result(const chzfcp_scsi_dbf_event ("rslt" , tag, level, adapter, scsi_cmnd, fsf_req,0 ); } +/** +* zfcp_scsi_dbf_event_abort - trace event for SCSI command abort +* @tag: tag indicating success or failure of abort operation +* @adapter: adapter thas has been used to issue SCSI command to be aborted +* @scsi_cmnd: SCSI command to be aborted +* @new_fsf_req: request containing abort (might be NULL) +* @old_req_id: identifier of request containg SCSI command to be aborted +*/ void zfcp_scsi_dbf_event_abort(const char *tag, struct zfcp_adapter *adapter, struct scsi_cmnd *scsi_cmnd, struct zfcp_fsf_req *new_fsf_req,
@@ -1086,6 +1141,13 @@ void zfcp_scsi_dbf_event_abort(const cha old_req_id); } +/** +* zfcp_scsi_dbf_event_devreset - trace event for Logical Unit or Target Reset +* @tag: tag indicating success or failure of reset operation +* @flag: indicates type of reset (Target Reset, Logical Unit Reset) +* @unit: unit that needs reset +* @scsi_cmnd: SCSI command which caused this error recovery +*/ void zfcp_scsi_dbf_event_devreset (const char *tag,u8 flag,struct zfcp_unit *unit,struct scsi_cmnd *scsi_cmnd)