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