Patch "blk-iocost: do not WARN if iocg was already offlined" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    blk-iocost: do not WARN if iocg was already offlined

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     blk-iocost-do-not-warn-if-iocg-was-already-offlined.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 47da0d9e4880426d951675e75459454030511cb7
Author: Li Nan <linan122@xxxxxxxxxx>
Date:   Fri Apr 19 17:32:57 2024 +0800

    blk-iocost: do not WARN if iocg was already offlined
    
    [ Upstream commit 01bc4fda9ea0a6b52f12326486f07a4910666cf6 ]
    
    In iocg_pay_debt(), warn is triggered if 'active_list' is empty, which
    is intended to confirm iocg is active when it has debt. However, warn
    can be triggered during a blkcg or disk removal, if iocg_waitq_timer_fn()
    is run at that time:
    
      WARNING: CPU: 0 PID: 2344971 at block/blk-iocost.c:1402 iocg_pay_debt+0x14c/0x190
      Call trace:
      iocg_pay_debt+0x14c/0x190
      iocg_kick_waitq+0x438/0x4c0
      iocg_waitq_timer_fn+0xd8/0x130
      __run_hrtimer+0x144/0x45c
      __hrtimer_run_queues+0x16c/0x244
      hrtimer_interrupt+0x2cc/0x7b0
    
    The warn in this situation is meaningless. Since this iocg is being
    removed, the state of the 'active_list' is irrelevant, and 'waitq_timer'
    is canceled after removing 'active_list' in ioc_pd_free(), which ensures
    iocg is freed after iocg_waitq_timer_fn() returns.
    
    Therefore, add the check if iocg was already offlined to avoid warn
    when removing a blkcg or disk.
    
    Signed-off-by: Li Nan <linan122@xxxxxxxxxx>
    Reviewed-by: Yu Kuai <yukuai3@xxxxxxxxxx>
    Acked-by: Tejun Heo <tj@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20240419093257.3004211-1-linan666@xxxxxxxxxxxxxxx
    Signed-off-by: Jens Axboe <axboe@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/block/blk-iocost.c b/block/blk-iocost.c
index a382b3a39820a..0dca77591d66c 100644
--- a/block/blk-iocost.c
+++ b/block/blk-iocost.c
@@ -1439,8 +1439,11 @@ static void iocg_pay_debt(struct ioc_gq *iocg, u64 abs_vpay,
 	lockdep_assert_held(&iocg->ioc->lock);
 	lockdep_assert_held(&iocg->waitq.lock);
 
-	/* make sure that nobody messed with @iocg */
-	WARN_ON_ONCE(list_empty(&iocg->active_list));
+	/*
+	 * make sure that nobody messed with @iocg. Check iocg->pd.online
+	 * to avoid warn when removing blkcg or disk.
+	 */
+	WARN_ON_ONCE(list_empty(&iocg->active_list) && iocg->pd.online);
 	WARN_ON_ONCE(iocg->inuse > 1);
 
 	iocg->abs_vdebt -= min(abs_vpay, iocg->abs_vdebt);




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux