Re: [PATCH v4 2/6] cgroup/cpuset: Properly handle partition root tree

From: Waiman Long
Date: Wed Aug 11 2021 - 15:27:27 EST

On 8/11/21 2:08 PM, Tejun Heo wrote:

On Tue, Aug 10, 2021 at 11:06:03PM -0400, Waiman Long wrote:
For a partition root tree with parent and child partition roots, this
patch will now prohibit changing parent partition root back to member
as changes to "cpuset.cpus.partition" should not cause those child
partition roots to become invalid.
So, the general rule is that a descendant should never be able to affect or
restrict what an ancestor can do in terms of configuration. This is because
descendant cgroups can be delegated and a system manager sitting at a higher
level in the hierarchy may not have much control over what happens under
delegated subtrees.

Given that we're promoting the error state as the first class citizen in the
interface anyway, wouldn't it be better to keep this in line too?

Disabling partition at the parent level does invalidate all the child partitions under it. So it must be done with care when we disable a partition.

How about we give some indication that a child partition exist when reading cpuset.cpus.partition and recommend double-checking it before disabling a partition? For example, we keep track of the number of cpus delegated to child partitions. Perhaps we can list that information on read.

With that information available, I have no objection to allow disabling a parent partition with child partitions under it.