Skip to content

Commit

Permalink
mq-deadline: make it clear that __dd_dispatch_request() works on all …
Browse files Browse the repository at this point in the history
…hw queues

Don't pass in the hardware queue to __dd_dispatch_request(), since it
leads the reader to believe that we are returning a request for that
specific hardware queue. That's not how mq-deadline works, the state
for determining which request to serve next is shared across all
hardware queues for a device.

Reviewed-by: Omar Sandoval <[email protected]>
Reviewed-by: Ming Lei <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
  • Loading branch information
axboe committed Jan 6, 2018
1 parent 14db491 commit ca11f20
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions block/mq-deadline.c
Original file line number Diff line number Diff line change
Expand Up @@ -267,9 +267,8 @@ deadline_next_request(struct deadline_data *dd, int data_dir)
* deadline_dispatch_requests selects the best request according to
* read/write expire, fifo_batch, etc
*/
static struct request *__dd_dispatch_request(struct blk_mq_hw_ctx *hctx)
static struct request *__dd_dispatch_request(struct deadline_data *dd)
{
struct deadline_data *dd = hctx->queue->elevator->elevator_data;
struct request *rq, *next_rq;
bool reads, writes;
int data_dir;
Expand Down Expand Up @@ -372,13 +371,19 @@ static struct request *__dd_dispatch_request(struct blk_mq_hw_ctx *hctx)
return rq;
}

/*
* One confusing aspect here is that we get called for a specific
* hardware queue, but we return a request that may not be for a
* different hardware queue. This is because mq-deadline has shared
* state for all hardware queues, in terms of sorting, FIFOs, etc.
*/
static struct request *dd_dispatch_request(struct blk_mq_hw_ctx *hctx)
{
struct deadline_data *dd = hctx->queue->elevator->elevator_data;
struct request *rq;

spin_lock(&dd->lock);
rq = __dd_dispatch_request(hctx);
rq = __dd_dispatch_request(dd);
spin_unlock(&dd->lock);

return rq;
Expand Down

0 comments on commit ca11f20

Please sign in to comment.