summaryrefslogtreecommitdiff
path: root/block/blk-mq.h
diff options
context:
space:
mode:
authorJens Axboe <axboe@fb.com>2017-01-26 14:42:34 -0700
committerJens Axboe <axboe@fb.com>2017-01-27 08:20:34 -0700
commit50e1dab86aa2c10cbca2f754aae9542169403141 (patch)
tree2e17cd0d604bf63d82e4f8838b57ec579690ca52 /block/blk-mq.h
parent99cf1dc580f0766825395aae4f60ec1d8438f011 (diff)
downloadlwn-50e1dab86aa2c10cbca2f754aae9542169403141.tar.gz
lwn-50e1dab86aa2c10cbca2f754aae9542169403141.zip
blk-mq-sched: fix starvation for multiple hardware queues and shared tags
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. Signed-off-by: Jens Axboe <axboe@fb.com> Reviewed-by: Omar Sandoval <osandov@fb.com> Tested-by: Hannes Reinecke <hare@suse.com>
Diffstat (limited to 'block/blk-mq.h')
-rw-r--r--block/blk-mq.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/block/blk-mq.h b/block/blk-mq.h
index 6c24b901acd7..077a4003f1fd 100644
--- a/block/blk-mq.h
+++ b/block/blk-mq.h
@@ -33,6 +33,7 @@ int blk_mq_update_nr_requests(struct request_queue *q, unsigned int nr);
void blk_mq_wake_waiters(struct request_queue *q);
bool blk_mq_dispatch_rq_list(struct blk_mq_hw_ctx *, struct list_head *);
void blk_mq_flush_busy_ctxs(struct blk_mq_hw_ctx *hctx, struct list_head *list);
+bool blk_mq_hctx_has_pending(struct blk_mq_hw_ctx *hctx);
/*
* Internal helpers for allocating/freeing the request map