Skip to content

Commit 0eebd00

Browse files
Bart Van Asscheaxboe
authored andcommitted
scsi: Implement blk_mq_ops.show_rq()
Show the SCSI CDB for pending SCSI commands in /sys/kernel/debug/block/*/mq/*/dispatch and */rq_list. An example of how SCSI commands are displayed by this code: ffff8801703245c0 {.op=READ, .cmd_flags=META PRIO, .rq_flags=DONTPREP IO_STAT STATS, .tag=14, .internal_tag=-1, .cmd=Read(10) 28 00 2a 81 1b 30 00 00 08 00} Signed-off-by: Bart Van Assche <[email protected]> Reviewed-by: Omar Sandoval <[email protected]> Cc: Martin K. Petersen <[email protected]> Cc: James Bottomley <[email protected]> Cc: Hannes Reinecke <[email protected]> Cc: <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
1 parent 2836ee4 commit 0eebd00

File tree

4 files changed

+22
-0
lines changed

4 files changed

+22
-0
lines changed

drivers/scsi/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ scsi_mod-y += scsi_scan.o scsi_sysfs.o scsi_devinfo.o
166166
scsi_mod-$(CONFIG_SCSI_NETLINK) += scsi_netlink.o
167167
scsi_mod-$(CONFIG_SYSCTL) += scsi_sysctl.o
168168
scsi_mod-$(CONFIG_SCSI_PROC_FS) += scsi_proc.o
169+
scsi_mod-$(CONFIG_BLK_DEBUG_FS) += scsi_debugfs.o
169170
scsi_mod-y += scsi_trace.o scsi_logging.o
170171
scsi_mod-$(CONFIG_PM) += scsi_pm.o
171172
scsi_mod-$(CONFIG_SCSI_DH) += scsi_dh.o

drivers/scsi/scsi_debugfs.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#include <linux/seq_file.h>
2+
#include <scsi/scsi_cmnd.h>
3+
#include <scsi/scsi_dbg.h>
4+
#include "scsi_debugfs.h"
5+
6+
void scsi_show_rq(struct seq_file *m, struct request *rq)
7+
{
8+
struct scsi_cmnd *cmd = container_of(scsi_req(rq), typeof(*cmd), req);
9+
char buf[80];
10+
11+
__scsi_format_command(buf, sizeof(buf), cmd->cmnd, cmd->cmd_len);
12+
seq_printf(m, ", .cmd=%s", buf);
13+
}

drivers/scsi/scsi_debugfs.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
struct request;
2+
struct seq_file;
3+
4+
void scsi_show_rq(struct seq_file *m, struct request *rq);

drivers/scsi/scsi_lib.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434

3535
#include <trace/events/scsi.h>
3636

37+
#include "scsi_debugfs.h"
3738
#include "scsi_priv.h"
3839
#include "scsi_logging.h"
3940

@@ -2157,6 +2158,9 @@ static const struct blk_mq_ops scsi_mq_ops = {
21572158
.queue_rq = scsi_queue_rq,
21582159
.complete = scsi_softirq_done,
21592160
.timeout = scsi_timeout,
2161+
#ifdef CONFIG_BLK_DEBUG_FS
2162+
.show_rq = scsi_show_rq,
2163+
#endif
21602164
.init_request = scsi_init_request,
21612165
.exit_request = scsi_exit_request,
21622166
.map_queues = scsi_map_queues,

0 commit comments

Comments
 (0)