Skip to content

Commit

Permalink
Revert "block, bfq: honor already-setup queue merges"
Browse files Browse the repository at this point in the history
[ Upstream commit ebc69e8 ]

This reverts commit 2d52c58.

We have had several folks complain that this causes hangs for them, which
is especially problematic as the commit has also hit stable already.

As no resolution seems to be forthcoming right now, revert the patch.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=214503
Fixes: 2d52c58 ("block, bfq: honor already-setup queue merges")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
  • Loading branch information
axboe authored and gregkh committed Oct 6, 2021
1 parent 1f2ca30 commit 0306a2c
Showing 1 changed file with 3 additions and 13 deletions.
16 changes: 3 additions & 13 deletions block/bfq-iosched.c
Expand Up @@ -2526,15 +2526,6 @@ bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)
* are likely to increase the throughput.
*/
bfqq->new_bfqq = new_bfqq;
/*
* The above assignment schedules the following redirections:
* each time some I/O for bfqq arrives, the process that
* generated that I/O is disassociated from bfqq and
* associated with new_bfqq. Here we increases new_bfqq->ref
* in advance, adding the number of processes that are
* expected to be associated with new_bfqq as they happen to
* issue I/O.
*/
new_bfqq->ref += process_refs;
return new_bfqq;
}
Expand Down Expand Up @@ -2594,10 +2585,6 @@ bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq,
{
struct bfq_queue *in_service_bfqq, *new_bfqq;

/* if a merge has already been setup, then proceed with that first */
if (bfqq->new_bfqq)
return bfqq->new_bfqq;

/*
* Do not perform queue merging if the device is non
* rotational and performs internal queueing. In fact, such a
Expand Down Expand Up @@ -2652,6 +2639,9 @@ bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq,
if (bfq_too_late_for_merging(bfqq))
return NULL;

if (bfqq->new_bfqq)
return bfqq->new_bfqq;

if (!io_struct || unlikely(bfqq == &bfqd->oom_bfqq))
return NULL;

Expand Down

0 comments on commit 0306a2c

Please sign in to comment.