lkml.org 
[lkml]   [2021]   [Dec]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [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

\
 
 \ /
  Last update: 2021-12-15 15:50    [W:0.269 / U:0.048 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site