cpupools: update domU's node-affinity on the cpupool_unassign_cpu() path
authorDario Faggioli <dario.faggioli@citrix.com>
Mon, 30 Sep 2013 11:59:47 +0000 (13:59 +0200)
committerJan Beulich <jbeulich@suse.com>
Mon, 30 Sep 2013 11:59:47 +0000 (13:59 +0200)
that is, when a cpu is remove from a pool, as it is happening already
on the cpupool_assign_cpu_*() path (i.e., when a cpu is added to a
pool).

Signed-off-by: Dario Faggioli <dario.faggioli@citrix.com>
Acked-by: Juergen Gross <juergen.gross@ts.fujitsu.com>
xen/common/cpupool.c

index 2164a9fc7268ab2d15e7cb9ebdc5b470c4717f7b..933de782b77736a46842c0f79634df952a0ede8f 100644 (file)
@@ -355,6 +355,12 @@ int cpupool_unassign_cpu(struct cpupool *c, unsigned int cpu)
     atomic_inc(&c->refcnt);
     cpupool_cpu_moving = c;
     cpumask_clear_cpu(cpu, c->cpu_valid);
+
+    rcu_read_lock(&domlist_read_lock);
+    for_each_domain_in_cpupool(d, c)
+        domain_update_node_affinity(d);
+    rcu_read_unlock(&domlist_read_lock);
+
     spin_unlock(&cpupool_lock);
 
     work_cpu = smp_processor_id();