Revert "block, bfq: honor already-setup queue merges"

This reverts commit 2d52c58b9c9bdae0ca3df6a1eab5745ab3f7d80b.

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: 2d52c58b9c9b ("block, bfq: honor already-setup queue merges")
Signed-off-by: Jens Axboe <axboe@kernel.dk>

+3 -13
+3 -13
block/bfq-iosched.c
··· 2662 2662 * are likely to increase the throughput. 2663 2663 */ 2664 2664 bfqq->new_bfqq = new_bfqq; 2665 - /* 2666 - * The above assignment schedules the following redirections: 2667 - * each time some I/O for bfqq arrives, the process that 2668 - * generated that I/O is disassociated from bfqq and 2669 - * associated with new_bfqq. Here we increases new_bfqq->ref 2670 - * in advance, adding the number of processes that are 2671 - * expected to be associated with new_bfqq as they happen to 2672 - * issue I/O. 2673 - */ 2674 2665 new_bfqq->ref += process_refs; 2675 2666 return new_bfqq; 2676 2667 } ··· 2723 2732 void *io_struct, bool request, struct bfq_io_cq *bic) 2724 2733 { 2725 2734 struct bfq_queue *in_service_bfqq, *new_bfqq; 2726 - 2727 - /* if a merge has already been setup, then proceed with that first */ 2728 - if (bfqq->new_bfqq) 2729 - return bfqq->new_bfqq; 2730 2735 2731 2736 /* 2732 2737 * Check delayed stable merge for rotational or non-queueing ··· 2824 2837 */ 2825 2838 if (bfq_too_late_for_merging(bfqq)) 2826 2839 return NULL; 2840 + 2841 + if (bfqq->new_bfqq) 2842 + return bfqq->new_bfqq; 2827 2843 2828 2844 if (!io_struct || unlikely(bfqq == &bfqd->oom_bfqq)) 2829 2845 return NULL;