Re: [PATCH] block: track per requests type merged count

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.




[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux