blk-mq-debugfs: Reorder queue show and store methods
Make sure that the queue show and store methods are contiguous and also that these appear in alphabetical order. Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com> Cc: Omar Sandoval <osandov@fb.com> Cc: Damien Le Moal <damien.lemoal@wdc.com> Cc: Ming Lei <ming.lei@redhat.com> Cc: Hannes Reinecke <hare@suse.de> Cc: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>hifive-unleashed-5.1
parent
025aecd8bd
commit
1209cb7fa4
|
@ -24,6 +24,64 @@
|
||||||
#include "blk-mq-debugfs.h"
|
#include "blk-mq-debugfs.h"
|
||||||
#include "blk-mq-tag.h"
|
#include "blk-mq-tag.h"
|
||||||
|
|
||||||
|
static void print_stat(struct seq_file *m, struct blk_rq_stat *stat)
|
||||||
|
{
|
||||||
|
if (stat->nr_samples) {
|
||||||
|
seq_printf(m, "samples=%d, mean=%lld, min=%llu, max=%llu",
|
||||||
|
stat->nr_samples, stat->mean, stat->min, stat->max);
|
||||||
|
} else {
|
||||||
|
seq_puts(m, "samples=0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int queue_poll_stat_show(void *data, struct seq_file *m)
|
||||||
|
{
|
||||||
|
struct request_queue *q = data;
|
||||||
|
int bucket;
|
||||||
|
|
||||||
|
for (bucket = 0; bucket < BLK_MQ_POLL_STATS_BKTS/2; bucket++) {
|
||||||
|
seq_printf(m, "read (%d Bytes): ", 1 << (9+bucket));
|
||||||
|
print_stat(m, &q->poll_stat[2*bucket]);
|
||||||
|
seq_puts(m, "\n");
|
||||||
|
|
||||||
|
seq_printf(m, "write (%d Bytes): ", 1 << (9+bucket));
|
||||||
|
print_stat(m, &q->poll_stat[2*bucket+1]);
|
||||||
|
seq_puts(m, "\n");
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *queue_requeue_list_start(struct seq_file *m, loff_t *pos)
|
||||||
|
__acquires(&q->requeue_lock)
|
||||||
|
{
|
||||||
|
struct request_queue *q = m->private;
|
||||||
|
|
||||||
|
spin_lock_irq(&q->requeue_lock);
|
||||||
|
return seq_list_start(&q->requeue_list, *pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *queue_requeue_list_next(struct seq_file *m, void *v, loff_t *pos)
|
||||||
|
{
|
||||||
|
struct request_queue *q = m->private;
|
||||||
|
|
||||||
|
return seq_list_next(v, &q->requeue_list, pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void queue_requeue_list_stop(struct seq_file *m, void *v)
|
||||||
|
__releases(&q->requeue_lock)
|
||||||
|
{
|
||||||
|
struct request_queue *q = m->private;
|
||||||
|
|
||||||
|
spin_unlock_irq(&q->requeue_lock);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct seq_operations queue_requeue_list_seq_ops = {
|
||||||
|
.start = queue_requeue_list_start,
|
||||||
|
.next = queue_requeue_list_next,
|
||||||
|
.stop = queue_requeue_list_stop,
|
||||||
|
.show = blk_mq_debugfs_rq_show,
|
||||||
|
};
|
||||||
|
|
||||||
static int blk_flags_show(struct seq_file *m, const unsigned long flags,
|
static int blk_flags_show(struct seq_file *m, const unsigned long flags,
|
||||||
const char *const *flag_name, int flag_name_count)
|
const char *const *flag_name, int flag_name_count)
|
||||||
{
|
{
|
||||||
|
@ -125,16 +183,6 @@ inval:
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_stat(struct seq_file *m, struct blk_rq_stat *stat)
|
|
||||||
{
|
|
||||||
if (stat->nr_samples) {
|
|
||||||
seq_printf(m, "samples=%d, mean=%lld, min=%llu, max=%llu",
|
|
||||||
stat->nr_samples, stat->mean, stat->min, stat->max);
|
|
||||||
} else {
|
|
||||||
seq_puts(m, "samples=0");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int queue_write_hint_show(void *data, struct seq_file *m)
|
static int queue_write_hint_show(void *data, struct seq_file *m)
|
||||||
{
|
{
|
||||||
struct request_queue *q = data;
|
struct request_queue *q = data;
|
||||||
|
@ -158,22 +206,13 @@ static ssize_t queue_write_hint_store(void *data, const char __user *buf,
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int queue_poll_stat_show(void *data, struct seq_file *m)
|
static const struct blk_mq_debugfs_attr blk_mq_debugfs_queue_attrs[] = {
|
||||||
{
|
{ "poll_stat", 0400, queue_poll_stat_show },
|
||||||
struct request_queue *q = data;
|
{ "requeue_list", 0400, .seq_ops = &queue_requeue_list_seq_ops },
|
||||||
int bucket;
|
{ "state", 0600, queue_state_show, queue_state_write },
|
||||||
|
{ "write_hints", 0600, queue_write_hint_show, queue_write_hint_store },
|
||||||
for (bucket = 0; bucket < BLK_MQ_POLL_STATS_BKTS/2; bucket++) {
|
{ },
|
||||||
seq_printf(m, "read (%d Bytes): ", 1 << (9+bucket));
|
};
|
||||||
print_stat(m, &q->poll_stat[2*bucket]);
|
|
||||||
seq_puts(m, "\n");
|
|
||||||
|
|
||||||
seq_printf(m, "write (%d Bytes): ", 1 << (9+bucket));
|
|
||||||
print_stat(m, &q->poll_stat[2*bucket+1]);
|
|
||||||
seq_puts(m, "\n");
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define HCTX_STATE_NAME(name) [BLK_MQ_S_##name] = #name
|
#define HCTX_STATE_NAME(name) [BLK_MQ_S_##name] = #name
|
||||||
static const char *const hctx_state_name[] = {
|
static const char *const hctx_state_name[] = {
|
||||||
|
@ -327,37 +366,6 @@ int blk_mq_debugfs_rq_show(struct seq_file *m, void *v)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(blk_mq_debugfs_rq_show);
|
EXPORT_SYMBOL_GPL(blk_mq_debugfs_rq_show);
|
||||||
|
|
||||||
static void *queue_requeue_list_start(struct seq_file *m, loff_t *pos)
|
|
||||||
__acquires(&q->requeue_lock)
|
|
||||||
{
|
|
||||||
struct request_queue *q = m->private;
|
|
||||||
|
|
||||||
spin_lock_irq(&q->requeue_lock);
|
|
||||||
return seq_list_start(&q->requeue_list, *pos);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void *queue_requeue_list_next(struct seq_file *m, void *v, loff_t *pos)
|
|
||||||
{
|
|
||||||
struct request_queue *q = m->private;
|
|
||||||
|
|
||||||
return seq_list_next(v, &q->requeue_list, pos);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void queue_requeue_list_stop(struct seq_file *m, void *v)
|
|
||||||
__releases(&q->requeue_lock)
|
|
||||||
{
|
|
||||||
struct request_queue *q = m->private;
|
|
||||||
|
|
||||||
spin_unlock_irq(&q->requeue_lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
static const struct seq_operations queue_requeue_list_seq_ops = {
|
|
||||||
.start = queue_requeue_list_start,
|
|
||||||
.next = queue_requeue_list_next,
|
|
||||||
.stop = queue_requeue_list_stop,
|
|
||||||
.show = blk_mq_debugfs_rq_show,
|
|
||||||
};
|
|
||||||
|
|
||||||
static void *hctx_dispatch_start(struct seq_file *m, loff_t *pos)
|
static void *hctx_dispatch_start(struct seq_file *m, loff_t *pos)
|
||||||
__acquires(&hctx->lock)
|
__acquires(&hctx->lock)
|
||||||
{
|
{
|
||||||
|
@ -747,14 +755,6 @@ static const struct file_operations blk_mq_debugfs_fops = {
|
||||||
.release = blk_mq_debugfs_release,
|
.release = blk_mq_debugfs_release,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct blk_mq_debugfs_attr blk_mq_debugfs_queue_attrs[] = {
|
|
||||||
{"poll_stat", 0400, queue_poll_stat_show},
|
|
||||||
{"requeue_list", 0400, .seq_ops = &queue_requeue_list_seq_ops},
|
|
||||||
{"state", 0600, queue_state_show, queue_state_write},
|
|
||||||
{"write_hints", 0600, queue_write_hint_show, queue_write_hint_store},
|
|
||||||
{},
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct blk_mq_debugfs_attr blk_mq_debugfs_hctx_attrs[] = {
|
static const struct blk_mq_debugfs_attr blk_mq_debugfs_hctx_attrs[] = {
|
||||||
{"state", 0400, hctx_state_show},
|
{"state", 0400, hctx_state_show},
|
||||||
{"flags", 0400, hctx_flags_show},
|
{"flags", 0400, hctx_flags_show},
|
||||||
|
|
Loading…
Reference in New Issue