aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/scsi/zfcp_dbf.c
diff options
context:
space:
mode:
authorChristof Schmitt <christof.schmitt@de.ibm.com>2009-08-18 09:43:08 -0400
committerJames Bottomley <James.Bottomley@suse.de>2009-09-05 09:49:08 -0400
commitdcd20e2316cdc333dfdee09649dbe3642eb30e75 (patch)
treefc565dd134841075a215a18ab7622ed8b2ea5c11 /drivers/s390/scsi/zfcp_dbf.c
parentd46f384a89c2378cb7858747faa1935db17e22a8 (diff)
[SCSI] zfcp: Only collect SCSI debug data for matching trace levels
The default trace level is to only trace failed SCSI commands. Thus it is not necessary to collect trace data for most SCSI commands since it will be thrown away later. Restructure the SCSI trace infrastructure to first check the trace level in a inline function and only do the expensive data collection for matching trace levels. Reviewed-by: Swen Schillig <swen@vnet.ibm.com> Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/s390/scsi/zfcp_dbf.c')
-rw-r--r--drivers/s390/scsi/zfcp_dbf.c58
1 files changed, 4 insertions, 54 deletions
diff --git a/drivers/s390/scsi/zfcp_dbf.c b/drivers/s390/scsi/zfcp_dbf.c
index 995e6128b6c9..61776d490d13 100644
--- a/drivers/s390/scsi/zfcp_dbf.c
+++ b/drivers/s390/scsi/zfcp_dbf.c
@@ -921,13 +921,11 @@ static struct debug_view zfcp_san_dbf_view = {
921 NULL 921 NULL
922}; 922};
923 923
924static void zfcp_scsi_dbf_event(const char *tag, const char *tag2, int level, 924void _zfcp_scsi_dbf_event(const char *tag, const char *tag2, int level,
925 struct zfcp_adapter *adapter, 925 struct zfcp_dbf *dbf, struct scsi_cmnd *scsi_cmnd,
926 struct scsi_cmnd *scsi_cmnd, 926 struct zfcp_fsf_req *fsf_req,
927 struct zfcp_fsf_req *fsf_req, 927 unsigned long old_req_id)
928 unsigned long old_req_id)
929{ 928{
930 struct zfcp_dbf *dbf = adapter->dbf;
931 struct zfcp_scsi_dbf_record *rec = &dbf->scsi_dbf_buf; 929 struct zfcp_scsi_dbf_record *rec = &dbf->scsi_dbf_buf;
932 struct zfcp_dbf_dump *dump = (struct zfcp_dbf_dump *)rec; 930 struct zfcp_dbf_dump *dump = (struct zfcp_dbf_dump *)rec;
933 unsigned long flags; 931 unsigned long flags;
@@ -999,54 +997,6 @@ static void zfcp_scsi_dbf_event(const char *tag, const char *tag2, int level,
999 spin_unlock_irqrestore(&dbf->scsi_dbf_lock, flags); 997 spin_unlock_irqrestore(&dbf->scsi_dbf_lock, flags);
1000} 998}
1001 999
1002/**
1003 * zfcp_scsi_dbf_event_result - trace event for SCSI command completion
1004 * @tag: tag indicating success or failure of SCSI command
1005 * @level: trace level applicable for this event
1006 * @adapter: adapter that has been used to issue the SCSI command
1007 * @scsi_cmnd: SCSI command pointer
1008 * @fsf_req: request used to issue SCSI command (might be NULL)
1009 */
1010void zfcp_scsi_dbf_event_result(const char *tag, int level,
1011 struct zfcp_adapter *adapter,
1012 struct scsi_cmnd *scsi_cmnd,
1013 struct zfcp_fsf_req *fsf_req)
1014{
1015 zfcp_scsi_dbf_event("rslt", tag, level, adapter, scsi_cmnd, fsf_req, 0);
1016}
1017
1018/**
1019 * zfcp_scsi_dbf_event_abort - trace event for SCSI command abort
1020 * @tag: tag indicating success or failure of abort operation
1021 * @adapter: adapter thas has been used to issue SCSI command to be aborted
1022 * @scsi_cmnd: SCSI command to be aborted
1023 * @new_fsf_req: request containing abort (might be NULL)
1024 * @old_req_id: identifier of request containg SCSI command to be aborted
1025 */
1026void zfcp_scsi_dbf_event_abort(const char *tag, struct zfcp_adapter *adapter,
1027 struct scsi_cmnd *scsi_cmnd,
1028 struct zfcp_fsf_req *new_fsf_req,
1029 unsigned long old_req_id)
1030{
1031 zfcp_scsi_dbf_event("abrt", tag, 1, adapter, scsi_cmnd, new_fsf_req,
1032 old_req_id);
1033}
1034
1035/**
1036 * zfcp_scsi_dbf_event_devreset - trace event for Logical Unit or Target Reset
1037 * @tag: tag indicating success or failure of reset operation
1038 * @flag: indicates type of reset (Target Reset, Logical Unit Reset)
1039 * @unit: unit that needs reset
1040 * @scsi_cmnd: SCSI command which caused this error recovery
1041 */
1042void zfcp_scsi_dbf_event_devreset(const char *tag, u8 flag,
1043 struct zfcp_unit *unit,
1044 struct scsi_cmnd *scsi_cmnd)
1045{
1046 zfcp_scsi_dbf_event(flag == FCP_TARGET_RESET ? "trst" : "lrst", tag, 1,
1047 unit->port->adapter, scsi_cmnd, NULL, 0);
1048}
1049
1050static int zfcp_scsi_dbf_view_format(debug_info_t *id, struct debug_view *view, 1000static int zfcp_scsi_dbf_view_format(debug_info_t *id, struct debug_view *view,
1051 char *out_buf, const char *in_buf) 1001 char *out_buf, const char *in_buf)
1052{ 1002{