On 9/16/19 5:35 PM, Chaitanya Kulkarni wrote:
diff --git a/block/blk-mq-debugfs.c b/block/blk-mq-debugfs.c index b3f2ba483992..1e46f2cbf84e 100644 --- a/block/blk-mq-debugfs.c +++ b/block/blk-mq-debugfs.c @@ -679,8 +679,21 @@ static ssize_t ctx_dispatched_write(void *data, const char __user *buf, static int ctx_merged_show(void *data, struct seq_file *m) { struct blk_mq_ctx *ctx = data; + unsigned long *rm = ctx->rq_merged; + + seq_printf(m, "READ %8lu\n", rm[REQ_OP_READ]); + seq_printf(m, "WRITE %8lu\n", rm[REQ_OP_WRITE]); + seq_printf(m, "FLUSH %8lu\n", rm[REQ_OP_FLUSH]); + seq_printf(m, "DISCARD %8lu\n", rm[REQ_OP_DISCARD]); + seq_printf(m, "SECURE_ERASE %8lu\n", rm[REQ_OP_SECURE_ERASE]); + seq_printf(m, "ZONE_RESET %8lu\n", rm[REQ_OP_ZONE_RESET]); + seq_printf(m, "ZONE_RESET_ALL %8lu\n", rm[REQ_OP_ZONE_RESET_ALL]); + seq_printf(m, "WRITE_ZEROES %8lu\n", rm[REQ_OP_WRITE_ZEROES]); + seq_printf(m, "SCSI_IN %8lu\n", rm[REQ_OP_SCSI_IN]); + seq_printf(m, "SCSI_OUT %8lu\n", rm[REQ_OP_SCSI_OUT]); + seq_printf(m, "DRV_IN %8lu\n", rm[REQ_OP_DRV_IN]); + seq_printf(m, "DRV_OUT %8lu\n", rm[REQ_OP_DRV_OUT]);- seq_printf(m, "%lu\n", ctx->rq_merged);return 0; }
Several request types shown above are never merged, e.g. FLUSH, WRITE_ZEROES, SCSI_IN, SCSI_OUT, DRV_IN and DRV_OUT (see also rq_mergeable()). Showing zero for these request types may confuse users. Can the body of this function be changed into a loop that does not print statistics for request types for which ctx->rq_merged[] is zero?
Thanks, Bart.
