Commit dcd028f8 authored by Steve Sistare's avatar Steve Sistare Committed by Cheng Jian
Browse files

sched/fair: Generalize the detach_task interface

hulk inclusion
category: feature
bugzilla: 38261, https://bugzilla.openeuler.org/show_bug.cgi?id=23


CVE: NA

---------------------------

The detach_task function takes a struct lb_env argument, but only needs a
few of its members.  Pass the rq and cpu arguments explicitly so the
function may be called from code that is not based on lb_env.  No
functional change.

Signed-off-by: default avatarSteve Sistare <steven.sistare@oracle.com>
Signed-off-by: default avatarCheng Jian <cj.chengjian@huawei.com>
Reviewed-by: default avatarHanjun Guo <guohanjun@huawei.com>
Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
Reviewed-by: default avatarXie XiuQi <xiexiuqi@huawei.com>
Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
parent a9bcd6af
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -7342,15 +7342,15 @@ int can_migrate_task(struct task_struct *p, struct lb_env *env)
}

/*
 * detach_task() -- detach the task for the migration specified in env
 * detach_task() -- detach the task for the migration from @src_rq to @dst_cpu.
 */
static void detach_task(struct task_struct *p, struct lb_env *env)
static void detach_task(struct task_struct *p, struct rq *src_rq, int dst_cpu)
{
	lockdep_assert_held(&env->src_rq->lock);
	lockdep_assert_held(&src_rq->lock);

	p->on_rq = TASK_ON_RQ_MIGRATING;
	deactivate_task(env->src_rq, p, DEQUEUE_NOCLOCK);
	set_task_cpu(p, env->dst_cpu);
	deactivate_task(src_rq, p, DEQUEUE_NOCLOCK);
	set_task_cpu(p, dst_cpu);
}

/*
@@ -7370,7 +7370,7 @@ static struct task_struct *detach_one_task(struct lb_env *env)
		if (!can_migrate_task(p, env))
			continue;

		detach_task(p, env);
		detach_task(p, env->src_rq, env->dst_cpu);

		/*
		 * Right now, this is only the second place where
@@ -7445,7 +7445,7 @@ static int detach_tasks(struct lb_env *env)
		if ((load / 2) > env->imbalance)
			goto next;

		detach_task(p, env);
		detach_task(p, env->src_rq, env->dst_cpu);
		list_add(&p->se.group_node, &env->tasks);

		detached++;