Messages in this thread | | | Date | Wed, 15 Dec 2021 15:49:44 +0100 | From | Michal Koutný <> | Subject | Re: [PATCH v9 3/7] cgroup/cpuset: Refining features and constraints of a partition |
| |
On Sun, Dec 05, 2021 at 01:32:16PM -0500, Waiman Long <longman@redhat.com> wrote: > @@ -1455,34 +1450,16 @@ static void update_cpumasks_hier(struct cpuset *cs, struct tmpmasks *tmp) > switch (parent->partition_root_state) { > [...] > - > case PRS_ENABLED: > - if (update_parent_subparts_cpumask(cp, partcmd_update, NULL, tmp)) > - update_tasks_cpumask(parent); > + update_parent = true; > [...] > + if (update_parent) { > + if (update_parent_subparts_cpumask(cp, partcmd_update, NULL, tmp)) > + update_tasks_cpumask(parent); > + /* > + * The cpuset partition_root_state may be changed > + * to PRS_ERROR. Capture it. > + */ > + new_prs = cp->partition_root_state; > + }
IIUC, this ensures that when a parent becomes partition root again, this would propagate downwards to invalidated children.
However, the documentation says:
> + Changing a partition root (valid or invalid) to "member" is > + always allowed. If there are child partition roots underneath > + it, they will become invalid and unrecoverable. So care must > + be taken to double check for this condition before disabling > + a partition root.
I.e. it suggests a child can be trapped in the unrecoverable state (i.e. not fixable by writing into cpuset.cpus.partition). But this does not happen, right?
Michal
| |