summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/sched/fair.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 09aac90df89..aa561c8dc89 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -1104,13 +1104,12 @@ static int task_numa_migrate(struct task_struct *p)
imp = task_faults(env.p, env.dst_nid) - faults;
update_numa_stats(&env.dst_stats, env.dst_nid);
- /*
- * If the preferred nid has capacity then use it. Otherwise find an
- * alternative node with relatively better statistics.
- */
- if (env.dst_stats.has_capacity) {
+ /* If the preferred nid has capacity, try to use it. */
+ if (env.dst_stats.has_capacity)
task_numa_find_cpu(&env, imp);
- } else {
+
+ /* No space available on the preferred nid. Look elsewhere. */
+ if (env.best_cpu == -1) {
for_each_online_node(nid) {
if (nid == env.src_nid || nid == p->numa_preferred_nid)
continue;