sched, cgroup: Restore meaning to hierarchical_quota
authorPhil Auld <pauld@redhat.com>
Fri, 14 Jul 2023 12:57:46 +0000 (08:57 -0400)
committerPeter Zijlstra <peterz@infradead.org>
Wed, 2 Aug 2023 14:19:26 +0000 (16:19 +0200)
commitc98c18270be115678f4295b10a5af5dcc9c4efa0
tree3a9c99a5d3f472be4a211ec3723704656598563b
parent113d0a6b3954b57907d1a6e3209f4174f504e0ae
sched, cgroup: Restore meaning to hierarchical_quota

In cgroupv2 cfs_b->hierarchical_quota is set to -1 for all task
groups due to the previous fix simply taking the min.  It should
reflect a limit imposed at that level or by an ancestor. Even
though cgroupv2 does not require child quota to be less than or
equal to that of its ancestors the task group will still be
constrained by such a quota so this should be shown here. Cgroupv1
continues to set this correctly.

In both cases, add initialization when a new task group is created
based on the current parent's value (or RUNTIME_INF in the case of
root_task_group). Otherwise, the field is wrong until a quota is
changed after creation and __cfs_schedulable() is called.

Fixes: c53593e5cb69 ("sched, cgroup: Don't reject lower cpu.max on ancestors")
Signed-off-by: Phil Auld <pauld@redhat.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Ben Segall <bsegall@google.com>
Acked-by: Tejun Heo <tj@kernel.org>
Link: https://lore.kernel.org/r/20230714125746.812891-1-pauld@redhat.com
kernel/sched/core.c
kernel/sched/fair.c
kernel/sched/sched.h