提交 8658dca8 编写于 作者: B Bart Van Assche 提交者: Jens Axboe

blk-mq: Show operation, cmd_flags and rq_flags names

Show the operation name, .cmd_flags and .rq_flags as names instead
of numbers.
Signed-off-by: NBart Van Assche <bart.vanassche@sandisk.com>
Reviewed-by: NOmar Sandoval <osandov@fb.com>
Reviewed-by: NHannes Reinecke <hare@suse.com>
Signed-off-by: NJens Axboe <axboe@fb.com>
上级 fd07dc81
......@@ -253,13 +253,79 @@ static const struct file_operations hctx_flags_fops = {
.release = single_release,
};
static const char *const op_name[] = {
[REQ_OP_READ] = "READ",
[REQ_OP_WRITE] = "WRITE",
[REQ_OP_FLUSH] = "FLUSH",
[REQ_OP_DISCARD] = "DISCARD",
[REQ_OP_ZONE_REPORT] = "ZONE_REPORT",
[REQ_OP_SECURE_ERASE] = "SECURE_ERASE",
[REQ_OP_ZONE_RESET] = "ZONE_RESET",
[REQ_OP_WRITE_SAME] = "WRITE_SAME",
[REQ_OP_WRITE_ZEROES] = "WRITE_ZEROES",
[REQ_OP_SCSI_IN] = "SCSI_IN",
[REQ_OP_SCSI_OUT] = "SCSI_OUT",
[REQ_OP_DRV_IN] = "DRV_IN",
[REQ_OP_DRV_OUT] = "DRV_OUT",
};
static const char *const cmd_flag_name[] = {
[__REQ_FAILFAST_DEV] = "FAILFAST_DEV",
[__REQ_FAILFAST_TRANSPORT] = "FAILFAST_TRANSPORT",
[__REQ_FAILFAST_DRIVER] = "FAILFAST_DRIVER",
[__REQ_SYNC] = "SYNC",
[__REQ_META] = "META",
[__REQ_PRIO] = "PRIO",
[__REQ_NOMERGE] = "NOMERGE",
[__REQ_IDLE] = "IDLE",
[__REQ_INTEGRITY] = "INTEGRITY",
[__REQ_FUA] = "FUA",
[__REQ_PREFLUSH] = "PREFLUSH",
[__REQ_RAHEAD] = "RAHEAD",
[__REQ_BACKGROUND] = "BACKGROUND",
[__REQ_NR_BITS] = "NR_BITS",
};
static const char *const rqf_name[] = {
[ilog2((__force u32)RQF_SORTED)] = "SORTED",
[ilog2((__force u32)RQF_STARTED)] = "STARTED",
[ilog2((__force u32)RQF_QUEUED)] = "QUEUED",
[ilog2((__force u32)RQF_SOFTBARRIER)] = "SOFTBARRIER",
[ilog2((__force u32)RQF_FLUSH_SEQ)] = "FLUSH_SEQ",
[ilog2((__force u32)RQF_MIXED_MERGE)] = "MIXED_MERGE",
[ilog2((__force u32)RQF_MQ_INFLIGHT)] = "MQ_INFLIGHT",
[ilog2((__force u32)RQF_DONTPREP)] = "DONTPREP",
[ilog2((__force u32)RQF_PREEMPT)] = "PREEMPT",
[ilog2((__force u32)RQF_COPY_USER)] = "COPY_USER",
[ilog2((__force u32)RQF_FAILED)] = "FAILED",
[ilog2((__force u32)RQF_QUIET)] = "QUIET",
[ilog2((__force u32)RQF_ELVPRIV)] = "ELVPRIV",
[ilog2((__force u32)RQF_IO_STAT)] = "IO_STAT",
[ilog2((__force u32)RQF_ALLOCED)] = "ALLOCED",
[ilog2((__force u32)RQF_PM)] = "PM",
[ilog2((__force u32)RQF_HASHED)] = "HASHED",
[ilog2((__force u32)RQF_STATS)] = "STATS",
[ilog2((__force u32)RQF_SPECIAL_PAYLOAD)] = "SPECIAL_PAYLOAD",
};
static int blk_mq_debugfs_rq_show(struct seq_file *m, void *v)
{
struct request *rq = list_entry_rq(v);
const unsigned int op = rq->cmd_flags & REQ_OP_MASK;
seq_printf(m, "%p {.cmd_flags=0x%x, .rq_flags=0x%x, .tag=%d, .internal_tag=%d}\n",
rq, rq->cmd_flags, (__force unsigned int)rq->rq_flags,
rq->tag, rq->internal_tag);
seq_printf(m, "%p {.op=", rq);
if (op < ARRAY_SIZE(op_name) && op_name[op])
seq_printf(m, "%s", op_name[op]);
else
seq_printf(m, "%d", op);
seq_puts(m, ", .cmd_flags=");
blk_flags_show(m, rq->cmd_flags & ~REQ_OP_MASK, cmd_flag_name,
ARRAY_SIZE(cmd_flag_name));
seq_puts(m, ", .rq_flags=");
blk_flags_show(m, (__force unsigned int)rq->rq_flags, rqf_name,
ARRAY_SIZE(rqf_name));
seq_printf(m, ", .tag=%d, .internal_tag=%d}\n", rq->tag,
rq->internal_tag);
return 0;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册