Skip to content
This repository has been archived by the owner on Apr 18, 2024. It is now read-only.

Commit

Permalink
Revert "dm: only run the queue on completion if congested or no reque…
Browse files Browse the repository at this point in the history
…sts pending"

This reverts commit 9a0e609.
(Resolved a conflict during revert due to commit bfebd1c that came
after)

This revert is motivated by a couple failure reports on request-based DM
multipath testbeds:
1) Netapp reported that their multipath fault injection test under heavy
   IO load can stall longer than 300 seconds.
2) IBM reported elevated lock contention in their testbed (likely due to
   increased back pressure due to IO not being dispatched as quickly):
   https://www.redhat.com/archives/dm-devel/2015-July/msg00057.html

Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Cc: stable@vger.kernel.org # 4.1+
  • Loading branch information
snitm committed Jul 8, 2015
1 parent 1c75187 commit 621739b
Showing 1 changed file with 2 additions and 6 deletions.
8 changes: 2 additions & 6 deletions drivers/md/dm.c
Expand Up @@ -1067,13 +1067,10 @@ static void rq_end_stats(struct mapped_device *md, struct request *orig)
*/
static void rq_completed(struct mapped_device *md, int rw, bool run_queue)
{
int nr_requests_pending;

atomic_dec(&md->pending[rw]);

/* nudge anyone waiting on suspend queue */
nr_requests_pending = md_in_flight(md);
if (!nr_requests_pending)
if (!md_in_flight(md))
wake_up(&md->wait);

/*
Expand All @@ -1085,8 +1082,7 @@ static void rq_completed(struct mapped_device *md, int rw, bool run_queue)
if (run_queue) {
if (md->queue->mq_ops)
blk_mq_run_hw_queues(md->queue, true);
else if (!nr_requests_pending ||
(nr_requests_pending >= md->queue->nr_congestion_on))
else
blk_run_queue_async(md->queue);
}

Expand Down

0 comments on commit 621739b

Please sign in to comment.