I followed Longman's idea to add a `deadline task transfer count` into cpuset and only update the `dl task count` in cpuset_attach(). Moreover, I switched from per-task DL BW request to a per-cpuset one. This way we don't have to free per-task in case xxx_can_attach() fails. The DL BW freeing is handled in cpuset_cancel_attach() for the case `multiple controllers and one of the non-cpuset can_attach() fails`. Only lightly tested on cgroup v1 with exclusive cpusets so far. Dietmar Eggemann (2): sched/deadline: Create DL BW alloc, free & check overflow interface cgroup/cpuset: Free DL BW in case can_attach() fails include/linux/sched.h | 4 ++- kernel/cgroup/cpuset.c | 55 +++++++++++++++++++++++++++++++++++++---- kernel/sched/core.c | 19 +++----------- kernel/sched/deadline.c | 53 +++++++++++++++++++++++++++++---------- kernel/sched/sched.h | 2 +- 5 files changed, 97 insertions(+), 36 deletions(-) -- 2.25.1