Messages in this thread | | | Subject | Re: [PATCH v2 1/2] blk-iocost: add refcounting for iocg | From | Yu Kuai <> | Date | Fri, 13 Jan 2023 09:25:11 +0800 |
| |
Hi,
在 2023/01/13 9:15, Tejun Heo 写道: > Hello, > > On Fri, Jan 13, 2023 at 09:10:25AM +0800, Yu Kuai wrote: >>> only activate the policy when the controller is actually enabled. So, idk. >>> What's wrong with synchronizing the two removal paths? blkcg policies are >>> combinations of cgroups and block device configurations, so having exit >>> paths from both sides is kinda natural. >> >> I still can't figure out how to synchronizing them will a mutex. Maybe >> I'm being foolish... > > Hmm... can't you just use e.g. per-bdev mutex which is grabbed by both > blkg_free_workfn() and blkcg_deactivate_policy()? >
I think hold the lock in blkg_free_workfn() is too late, pd_free_fn() for parent from blkcg_deactivate_policy() can be called first.
t1: remove cgroup t1/t2 blkcg_destroy_blkgs blkg_destroy percpu_ref_kill(&blkg->refcnt) blkg_release blkg_free schedule_work(&blkg->free_work) // t1 is done
t2: handle t1 from removing device blkcg_deactivate_policy pd_free_fn // free parent t3: from t1 blkg_free_workfn pd_free_fn // free child
Thanks, Kuai
| |