Re: [PATCH v2] scsi: trace: change the rtn log in string
From: Kassey Li quic
Date: Mon May 19 2025 - 05:45:00 EST
On 2025/5/14 21:09, Steven Rostedt wrote:
On Wed, 14 May 2025 15:44:56 +0800
Kassey Li <quic_yingangl@xxxxxxxxxxx> wrote:
In default it showed rtn in decimal.
kworker/3:1H-183 [003] .... 51.035474: scsi_dispatch_cmd_error: host_no=0 channel=0 id=0 lun=4 data_sgl=1 prot_sgl=0 prot_op=SCSI_PROT_NORMAL cmnd=(READ_10 lba=3907214 txlen=1 protect=0 raw=28 00 00 3b 9e 8e 00 00 01 00) rtn=4181
In source code we define these possible value as hexadecimal:
include/scsi/scsi.h
SCSI_MLQUEUE_HOST_BUSY 0x1055
SCSI_MLQUEUE_DEVICE_BUSY 0x1056
SCSI_MLQUEUE_EH_RETRY 0x1057
SCSI_MLQUEUE_TARGET_BUSY 0x1058
This change shows the string type.
Nit, but would an example of the new output be useful in the change log?
it is not 100% to reproduce the error path.
So I forced to show this by below change,
is this fine to test this ?
change to enforce the log:
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 2b27a412aad9..cbc76a09dc75 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -1518,6 +1518,7 @@ static int scsi_dispatch_cmd(struct scsi_cmnd *cmd)
trace_scsi_dispatch_cmd_start(cmd);
rtn = host->hostt->queuecommand(host, cmd);
+ trace_scsi_dispatch_cmd_error(cmd, rtn);
if (rtn) {
atomic_dec(&cmd->device->iorequest_cnt);
trace_scsi_dispatch_cmd_error(cmd, rtn);
test cmd:
echo 1 > /sys/kernel/tracing/events/scsi/scsi_dispatch_cmd_error/enable
cat /sys/kernel/tracing/trace_pipe &
dd if=/dev/block/sde of=/oem/1.txt bs=1M count=1
log:
dd-1092 [007] ..... 40.975673: scsi_dispatch_cmd_error: host_no=0
channel=0 id=0 lun=4 data_sgl=33 prot_sgl=0 prot_op=SCSI_PROT_NORMAL
driver_tag=57 scheduler_tag=52 cmnd=(READ_10 lba=3328 txlen=128
protect=0 raw=28 00 00 00 0d 00 00 00 80 00) rtn=0x0
Signed-off-by: Kassey Li <quic_yingangl@xxxxxxxxxxx>
Other than that,
Reviewed-by: Steven Rostedt (Google) <rostedt@xxxxxxxxxxx>
-- Steve