Re: [PATCH 4/5] blk-mq-sched: fix starvation for multiple hardware queues and shared tags
From: Jens Axboe <axboe@fb.com>
Date: 2017-01-26 20:26:31
On 01/26/2017 01:25 PM, Omar Sandoval wrote:
On Thu, Jan 26, 2017 at 12:48:17PM -0700, Jens Axboe wrote:quoted
If we have both multiple hardware queues and shared tag map between devices, we need to ensure that we propagate the hardware queue restart bit higher up. This is because we can get into a situation where we don't have any IO pending on a hardware queue, yet we fail getting a tag to start new IO. If that happens, it's not enough to mark the hardware queue as needing a restart, we need to bubble that up to the higher level queue as well.One minor nit below. Otherwise, makes sense. Reviewed-by: Omar Sandoval <redacted>quoted
Signed-off-by: Jens Axboe <axboe@fb.com> --- block/blk-mq-sched.c | 28 ++++++++++++++++++++++++++++ block/blk-mq-sched.h | 15 +++++++++------ block/blk-mq.c | 3 ++- block/blk-mq.h | 1 + include/linux/blkdev.h | 1 + 5 files changed, 41 insertions(+), 7 deletions(-)quoted
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 25564857f5f8..73bcd201a9b7 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h@@ -602,6 +602,7 @@ struct request_queue { #define QUEUE_FLAG_FLUSH_NQ 25 /* flush not queueuable */ #define QUEUE_FLAG_DAX 26 /* device supports DAX */ #define QUEUE_FLAG_STATS 27 /* track rq completion times */ +#define QUEUE_FLAG_RESTART 28All of the other queue flags have a comment, could you add one here, too?
Definitely, I'll add an appropriate comment. -- Jens Axboe