[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20211127101059.477405-5-yukuai3@huawei.com>
Date: Sat, 27 Nov 2021 18:10:59 +0800
From: Yu Kuai <yukuai3@...wei.com>
To: <hch@...radead.org>, <tj@...nel.org>, <axboe@...nel.dk>
CC: <cgroups@...r.kernel.org>, <linux-block@...r.kernel.org>,
<linux-kernel@...r.kernel.org>, <yukuai3@...wei.com>,
<yi.zhang@...wei.com>
Subject: [PATCH 4/4] block: cancel all throttled bios in del_gendisk()
Throttled bios can't be issued after del_gendisk() is done, thus
it's better to cancel them immediately rather than waiting for
throttle is done.
For example, if user thread is throttled with low bps while it's
issuing large io, and the device is deleted. The user thread will
wait for a long time for io to return.
Signed-off-by: Yu Kuai <yukuai3@...wei.com>
---
block/genhd.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/block/genhd.c b/block/genhd.c
index 8e9cbf23c510..24fa3356d164 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -28,6 +28,7 @@
#include "blk.h"
#include "blk-rq-qos.h"
+#include "blk-throttle.h"
static struct kobject *block_depr;
@@ -619,6 +620,7 @@ void del_gendisk(struct gendisk *disk)
blk_mq_freeze_queue_wait(q);
+ blk_throtl_cancel_bios(q);
rq_qos_exit(q);
blk_sync_queue(q);
blk_flush_integrity();
--
2.31.1
Powered by blists - more mailing lists