Re: [PATCH v9 3/7] cgroup/cpuset: Refining features and constraints of a partition

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 12/15/21 09:49, Michal Koutný wrote:
On Sun, Dec 05, 2021 at 01:32:16PM -0500, Waiman Long <longman@xxxxxxxxxx> 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?

There are additional checks for the member to partition transition which requires that the target cpuset shouldn't have child cpuset. That prevents the recovering of a invalid partition root under a member cpuset. We could certainly remove that restriction by adding additional code as well as additional tests to verify it works. I haven't done that simply to avoid adding more complexity to the current code.

Cheers,
Longman




[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux