diff mbox series

[2/4] blk-throtl: don't warn in tg_drain_bios()

Message ID 20211127101059.477405-3-yukuai3@huawei.com (mailing list archive)
State New, archived
Headers show
Series cancel all throttled bios in del_gendisk() | expand

Commit Message

Yu Kuai Nov. 27, 2021, 10:10 a.m. UTC
tg_drain_bios() will iterate until throtl_rb_first() return NULL,
don't warn in such situation.

Signed-off-by: Yu Kuai <yukuai3@huawei.com>
---
 block/blk-throttle.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

Comments

Christoph Hellwig Nov. 29, 2021, 11:46 a.m. UTC | #1
On Sat, Nov 27, 2021 at 06:10:57PM +0800, Yu Kuai wrote:
> tg_drain_bios() will iterate until throtl_rb_first() return NULL,
> don't warn in such situation.
> 
> Signed-off-by: Yu Kuai <yukuai3@huawei.com>
> ---
>  block/blk-throttle.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/block/blk-throttle.c b/block/blk-throttle.c
> index 230e300c5856..25822c88bea1 100644
> --- a/block/blk-throttle.c
> +++ b/block/blk-throttle.c
> @@ -497,12 +497,13 @@ static void throtl_pd_free(struct blkg_policy_data *pd)
>  }
>  
>  static struct throtl_grp *
> -throtl_rb_first(struct throtl_service_queue *parent_sq)
> +throtl_rb_first(struct throtl_service_queue *parent_sq, bool warn)
>  {
>  	struct rb_node *n;
>  
>  	n = rb_first_cached(&parent_sq->pending_tree);
> -	WARN_ON_ONCE(!n);
> +	if (warn)
> +		WARN_ON_ONCE(!n);
>  	if (!n)
>  		return NULL;

Just shift then WARN_ON_ONCE into the callers that care.
diff mbox series

Patch

diff --git a/block/blk-throttle.c b/block/blk-throttle.c
index 230e300c5856..25822c88bea1 100644
--- a/block/blk-throttle.c
+++ b/block/blk-throttle.c
@@ -497,12 +497,13 @@  static void throtl_pd_free(struct blkg_policy_data *pd)
 }
 
 static struct throtl_grp *
-throtl_rb_first(struct throtl_service_queue *parent_sq)
+throtl_rb_first(struct throtl_service_queue *parent_sq, bool warn)
 {
 	struct rb_node *n;
 
 	n = rb_first_cached(&parent_sq->pending_tree);
-	WARN_ON_ONCE(!n);
+	if (warn)
+		WARN_ON_ONCE(!n);
 	if (!n)
 		return NULL;
 	return rb_entry_tg(n);
@@ -520,7 +521,7 @@  static void update_min_dispatch_time(struct throtl_service_queue *parent_sq)
 {
 	struct throtl_grp *tg;
 
-	tg = throtl_rb_first(parent_sq);
+	tg = throtl_rb_first(parent_sq, true);
 	if (!tg)
 		return;
 
@@ -1089,7 +1090,7 @@  static int throtl_select_dispatch(struct throtl_service_queue *parent_sq)
 		if (!parent_sq->nr_pending)
 			break;
 
-		tg = throtl_rb_first(parent_sq);
+		tg = throtl_rb_first(parent_sq, true);
 		if (!tg)
 			break;
 
@@ -2266,7 +2267,7 @@  static void tg_drain_bios(struct throtl_service_queue *parent_sq)
 {
 	struct throtl_grp *tg;
 
-	while ((tg = throtl_rb_first(parent_sq))) {
+	while ((tg = throtl_rb_first(parent_sq, false))) {
 		struct throtl_service_queue *sq = &tg->service_queue;
 		struct bio *bio;