aboutsummaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorBart Van Assche2017-04-26 15:47:55 -0500
committerJens Axboe2017-04-26 16:09:04 -0500
commit8658dca8bd5666f50e02400f844079e520641d8c (patch)
tree666f2dff5bf6a1edc0b04b1bec6b13acb9f2cf4f /block
parentfd07dc81850e8bf26046bf7ccd7430211c9c5910 (diff)
downloadkernel-8658dca8bd5666f50e02400f844079e520641d8c.tar.gz
kernel-8658dca8bd5666f50e02400f844079e520641d8c.tar.xz
kernel-8658dca8bd5666f50e02400f844079e520641d8c.zip
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: Bart Van Assche <bart.vanassche@sandisk.com> Reviewed-by: Omar Sandoval <osandov@fb.com> Reviewed-by: Hannes Reinecke <hare@suse.com> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block')
-rw-r--r--block/blk-mq-debugfs.c72
1 files changed, 69 insertions, 3 deletions
diff --git a/block/blk-mq-debugfs.c b/block/blk-mq-debugfs.c
index ccc7b0f71230..ac39093c4ef7 100644
--- a/block/blk-mq-debugfs.c
+++ b/block/blk-mq-debugfs.c
@@ -253,13 +253,79 @@ static const struct file_operations hctx_flags_fops = {
253 .release = single_release, 253 .release = single_release,
254}; 254};
255 255
256static const char *const op_name[] = {
257 [REQ_OP_READ] = "READ",
258 [REQ_OP_WRITE] = "WRITE",
259 [REQ_OP_FLUSH] = "FLUSH",
260 [REQ_OP_DISCARD] = "DISCARD",
261 [REQ_OP_ZONE_REPORT] = "ZONE_REPORT",
262 [REQ_OP_SECURE_ERASE] = "SECURE_ERASE",
263 [REQ_OP_ZONE_RESET] = "ZONE_RESET",
264 [REQ_OP_WRITE_SAME] = "WRITE_SAME",
265 [REQ_OP_WRITE_ZEROES] = "WRITE_ZEROES",
266 [REQ_OP_SCSI_IN] = "SCSI_IN",
267 [REQ_OP_SCSI_OUT] = "SCSI_OUT",
268 [REQ_OP_DRV_IN] = "DRV_IN",
269 [REQ_OP_DRV_OUT] = "DRV_OUT",
270};
271
272static const char *const cmd_flag_name[] = {
273 [__REQ_FAILFAST_DEV] = "FAILFAST_DEV",
274 [__REQ_FAILFAST_TRANSPORT] = "FAILFAST_TRANSPORT",
275 [__REQ_FAILFAST_DRIVER] = "FAILFAST_DRIVER",
276 [__REQ_SYNC] = "SYNC",
277 [__REQ_META] = "META",
278 [__REQ_PRIO] = "PRIO",
279 [__REQ_NOMERGE] = "NOMERGE",
280 [__REQ_IDLE] = "IDLE",
281 [__REQ_INTEGRITY] = "INTEGRITY",
282 [__REQ_FUA] = "FUA",
283 [__REQ_PREFLUSH] = "PREFLUSH",
284 [__REQ_RAHEAD] = "RAHEAD",
285 [__REQ_BACKGROUND] = "BACKGROUND",
286 [__REQ_NR_BITS] = "NR_BITS",
287};
288
289static const char *const rqf_name[] = {
290 [ilog2((__force u32)RQF_SORTED)] = "SORTED",
291 [ilog2((__force u32)RQF_STARTED)] = "STARTED",
292 [ilog2((__force u32)RQF_QUEUED)] = "QUEUED",
293 [ilog2((__force u32)RQF_SOFTBARRIER)] = "SOFTBARRIER",
294 [ilog2((__force u32)RQF_FLUSH_SEQ)] = "FLUSH_SEQ",
295 [ilog2((__force u32)RQF_MIXED_MERGE)] = "MIXED_MERGE",
296 [ilog2((__force u32)RQF_MQ_INFLIGHT)] = "MQ_INFLIGHT",
297 [ilog2((__force u32)RQF_DONTPREP)] = "DONTPREP",
298 [ilog2((__force u32)RQF_PREEMPT)] = "PREEMPT",
299 [ilog2((__force u32)RQF_COPY_USER)] = "COPY_USER",
300 [ilog2((__force u32)RQF_FAILED)] = "FAILED",
301 [ilog2((__force u32)RQF_QUIET)] = "QUIET",
302 [ilog2((__force u32)RQF_ELVPRIV)] = "ELVPRIV",
303 [ilog2((__force u32)RQF_IO_STAT)] = "IO_STAT",
304 [ilog2((__force u32)RQF_ALLOCED)] = "ALLOCED",
305 [ilog2((__force u32)RQF_PM)] = "PM",
306 [ilog2((__force u32)RQF_HASHED)] = "HASHED",
307 [ilog2((__force u32)RQF_STATS)] = "STATS",
308 [ilog2((__force u32)RQF_SPECIAL_PAYLOAD)] = "SPECIAL_PAYLOAD",
309};
310
256static int blk_mq_debugfs_rq_show(struct seq_file *m, void *v) 311static int blk_mq_debugfs_rq_show(struct seq_file *m, void *v)
257{ 312{
258 struct request *rq = list_entry_rq(v); 313 struct request *rq = list_entry_rq(v);
314 const unsigned int op = rq->cmd_flags & REQ_OP_MASK;
259 315
260 seq_printf(m, "%p {.cmd_flags=0x%x, .rq_flags=0x%x, .tag=%d, .internal_tag=%d}\n", 316 seq_printf(m, "%p {.op=", rq);
261 rq, rq->cmd_flags, (__force unsigned int)rq->rq_flags, 317 if (op < ARRAY_SIZE(op_name) && op_name[op])
262 rq->tag, rq->internal_tag); 318 seq_printf(m, "%s", op_name[op]);
319 else
320 seq_printf(m, "%d", op);
321 seq_puts(m, ", .cmd_flags=");
322 blk_flags_show(m, rq->cmd_flags & ~REQ_OP_MASK, cmd_flag_name,
323 ARRAY_SIZE(cmd_flag_name));
324 seq_puts(m, ", .rq_flags=");
325 blk_flags_show(m, (__force unsigned int)rq->rq_flags, rqf_name,
326 ARRAY_SIZE(rqf_name));
327 seq_printf(m, ", .tag=%d, .internal_tag=%d}\n", rq->tag,
328 rq->internal_tag);
263 return 0; 329 return 0;
264} 330}
265 331