cpusets: randomize node rotor used in cpuset_mem_spread_node()
[linux-2.6-block.git] / kernel / cpuset.c
index 9c9b7545c81078c7ae43253cc1714a73fcb2691e..f8bc977ccbbe1fb171ed5d15327eb73aa1a652ab 100644 (file)
@@ -2460,11 +2460,19 @@ static int cpuset_spread_node(int *rotor)
 
 int cpuset_mem_spread_node(void)
 {
+       if (current->cpuset_mem_spread_rotor == NUMA_NO_NODE)
+               current->cpuset_mem_spread_rotor =
+                       node_random(&current->mems_allowed);
+
        return cpuset_spread_node(&current->cpuset_mem_spread_rotor);
 }
 
 int cpuset_slab_spread_node(void)
 {
+       if (current->cpuset_slab_spread_rotor == NUMA_NO_NODE)
+               current->cpuset_slab_spread_rotor =
+                       node_random(&current->mems_allowed);
+
        return cpuset_spread_node(&current->cpuset_slab_spread_rotor);
 }