]> git.baikalelectronics.ru Git - kernel.git/commitdiff
blk-throttle: calling throtl_dequeue/enqueue_tg in pairs
authorYu Kuai <yukuai3@huawei.com>
Sat, 27 Aug 2022 10:16:36 +0000 (18:16 +0800)
committerJens Axboe <axboe@kernel.dk>
Mon, 12 Sep 2022 06:20:07 +0000 (00:20 -0600)
It's a little weird to call throtl_dequeue_tg() unconditionally in
throtl_select_dispatch(), since it will be called in tg_update_disptime()
again if some bio is still throttled. Thus call it later if there are no
throttled bio. There are no functional changes.

Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Acked-by: Tejun Heo <tj@kernel.org>
Link: https://lore.kernel.org/r/20220827101637.1775111-3-yukuai1@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-throttle.c

index 27d46a7d309b3545b0b6280d67233fa553d3b567..4c12df8f6bae80ef4b905858c438fb889a676a62 100644 (file)
@@ -1146,13 +1146,13 @@ static int throtl_select_dispatch(struct throtl_service_queue *parent_sq)
                if (time_before(jiffies, tg->disptime))
                        break;
 
-               throtl_dequeue_tg(tg);
-
                nr_disp += throtl_dispatch_tg(tg);
 
                sq = &tg->service_queue;
                if (sq->nr_queued[READ] || sq->nr_queued[WRITE])
                        tg_update_disptime(tg);
+               else
+                       throtl_dequeue_tg(tg);
 
                if (nr_disp >= THROTL_QUANTUM)
                        break;