Message ID | 20170427155437.23228-7-bart.vanassche@sandisk.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, Apr 27, 2017 at 08:54:37AM -0700, Bart Van Assche wrote: > Running a queue causes the block layer to examine the per-CPU and > hw queues but not the requeue list. Hence add a 'kick' operation > that also examines the requeue list. The naming of these operations isn't super intuitive, but it makes enough sense if you know the code, I guess. Reviewed-by: Omar Sandoval <osandov@fb.com> > Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com> > Cc: Omar Sandoval <osandov@fb.com> > Cc: Hannes Reinecke <hare@suse.com> > --- > block/blk-mq-debugfs.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/block/blk-mq-debugfs.c b/block/blk-mq-debugfs.c > index a5e286e04569..aeca26c739d1 100644 > --- a/block/blk-mq-debugfs.c > +++ b/block/blk-mq-debugfs.c > @@ -120,8 +120,10 @@ static ssize_t blk_queue_flags_store(struct file *file, const char __user *ubuf, > blk_mq_run_hw_queues(q, true); > } else if (strcmp(op, "start") == 0) { > blk_mq_start_stopped_hw_queues(q, true); > + } else if (strcmp(op, "kick") == 0) { > + blk_mq_kick_requeue_list(q); > } else { > - pr_err("%s: unsupported operation %s. Use either 'run' or 'start'\n", > + pr_err("%s: unsupported operation %s. Use 'run', 'start' or 'kick'\n", > __func__, op); > return -EINVAL; > } > -- > 2.12.2 >
On 05/01/2017 06:19 PM, Omar Sandoval wrote: > On Thu, Apr 27, 2017 at 08:54:37AM -0700, Bart Van Assche wrote: >> Running a queue causes the block layer to examine the per-CPU and >> hw queues but not the requeue list. Hence add a 'kick' operation >> that also examines the requeue list. > > The naming of these operations isn't super intuitive, but it makes > enough sense if you know the code, I guess. I don't worry about that too much, but I do think it's important that we have some way of knowing WHAT commands are available for a given kernel, without having to consult the source. It's no big deal you're running the latest and greatest debug kernels, but it's a bigger issue if you're debugging kernel x.y.z for a customer and you have to consult the source to find them. Can we include it in the show output?
On Mon, 2017-05-01 at 18:24 -0600, Jens Axboe wrote: > On 05/01/2017 06:19 PM, Omar Sandoval wrote: > > On Thu, Apr 27, 2017 at 08:54:37AM -0700, Bart Van Assche wrote: > > > Running a queue causes the block layer to examine the per-CPU and > > > hw queues but not the requeue list. Hence add a 'kick' operation > > > that also examines the requeue list. > > > > The naming of these operations isn't super intuitive, but it makes > > enough sense if you know the code, I guess. > > I don't worry about that too much, but I do think it's important > that we have some way of knowing WHAT commands are available > for a given kernel, without having to consult the source. It's > no big deal you're running the latest and greatest debug kernels, > but it's a bigger issue if you're debugging kernel x.y.z for > a customer and you have to consult the source to find them. > > Can we include it in the show output? Hello Jens, Sorry but I'm afraid that including the list of supported commands in the 'show' output would make that output harder to read. Figuring out what the supported commands are is not that hard as the output below shows: # dmesg -c >/dev/null; for d in /sys/kernel/debug/block/*/mq/state; do \ if [ -e "$d" ]; then echo help >$d 2>/dev/null; break; fi; done; dmesg blk_queue_flags_store: unsupported operation help. Use 'run', 'start' or 'kick' Bart.
On 05/02/2017 10:23 AM, Bart Van Assche wrote: > On Mon, 2017-05-01 at 18:24 -0600, Jens Axboe wrote: >> On 05/01/2017 06:19 PM, Omar Sandoval wrote: >>> On Thu, Apr 27, 2017 at 08:54:37AM -0700, Bart Van Assche wrote: >>>> Running a queue causes the block layer to examine the per-CPU and >>>> hw queues but not the requeue list. Hence add a 'kick' operation >>>> that also examines the requeue list. >>> >>> The naming of these operations isn't super intuitive, but it makes >>> enough sense if you know the code, I guess. >> >> I don't worry about that too much, but I do think it's important >> that we have some way of knowing WHAT commands are available >> for a given kernel, without having to consult the source. It's >> no big deal you're running the latest and greatest debug kernels, >> but it's a bigger issue if you're debugging kernel x.y.z for >> a customer and you have to consult the source to find them. >> >> Can we include it in the show output? > > Hello Jens, > > Sorry but I'm afraid that including the list of supported commands in the > 'show' output would make that output harder to read. Figuring out what the > supported commands are is not that hard as the output below shows: > > # dmesg -c >/dev/null; for d in /sys/kernel/debug/block/*/mq/state; do \ > if [ -e "$d" ]; then echo help >$d 2>/dev/null; break; fi; done; dmesg > blk_queue_flags_store: unsupported operation help. Use 'run', 'start' or 'kick' Ah perfect, I missed that. That's perfectly fine, all I care about is that there is some way to tell what the valid commands are, without having to find the source.
diff --git a/block/blk-mq-debugfs.c b/block/blk-mq-debugfs.c index a5e286e04569..aeca26c739d1 100644 --- a/block/blk-mq-debugfs.c +++ b/block/blk-mq-debugfs.c @@ -120,8 +120,10 @@ static ssize_t blk_queue_flags_store(struct file *file, const char __user *ubuf, blk_mq_run_hw_queues(q, true); } else if (strcmp(op, "start") == 0) { blk_mq_start_stopped_hw_queues(q, true); + } else if (strcmp(op, "kick") == 0) { + blk_mq_kick_requeue_list(q); } else { - pr_err("%s: unsupported operation %s. Use either 'run' or 'start'\n", + pr_err("%s: unsupported operation %s. Use 'run', 'start' or 'kick'\n", __func__, op); return -EINVAL; }
Running a queue causes the block layer to examine the per-CPU and hw queues but not the requeue list. Hence add a 'kick' operation that also examines the requeue list. Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com> Cc: Omar Sandoval <osandov@fb.com> Cc: Hannes Reinecke <hare@suse.com> --- block/blk-mq-debugfs.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)