Messages in this thread | | | Subject | Re: [PATCH -next 2/4] blk-iocost: don't throttle bio if iocg is offlined | From | Yu Kuai <> | Date | Tue, 20 Dec 2022 17:38:05 +0800 |
| |
Hi,
在 2022/12/20 5:28, Tejun Heo 写道: > On Sat, Dec 17, 2022 at 11:05:25AM +0800, Yu Kuai wrote: >> From: Yu Kuai <yukuai3@huawei.com> >> >> bio will grab blkg reference, however, blkcg->online_pin is not grabbed, >> hence cgroup can be removed after thread exit while bio is still in >> progress. Bypass io in this case since it doesn't make sense to >> throttle bio while cgroup is removed. > > I don't get it. Why wouldn't that make sense? ISTR some occasions where we > clear the config to mitigate exits stalling for too long but in general a > policy being active on a draining cgroup shouldn't be a problem.
The main reason here for patch 2/3 is for patch 4, since bio can still reach rq_qos after pd_offline_fn is called.
Currently, it's not consistent and seems messy how different policies implement pd_alloc/free_fn, pd_online/offline_fn, and pd_init_fn. For iocost, iocg is exited in pd_free_fn, and parent iocg can exits before child, which will cause many problems.
Patch 2/3 are not necessary if we don't choose to fix such problems by exiting iocg in ioc_pd_offline() in patch 4.
I'll try to think about how to use refcnting, either from blkg layer or add refcnting for iocg.
Thanks, Kuai > > Thanks. >
| |