freezer: remove unused @sig_only from freeze_task()
After "freezer: make freezing() test freeze conditions in effect instead of TIF_FREEZE", freezing() returns authoritative answer on whether the current task should freeze or not and freeze_task() doesn't need or use @sig_only. Remove it. While at it, rewrite function comment for freeze_task() and rename @sig_only to @user_only in try_to_freeze_tasks(). This patch doesn't cause any functional change. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Oleg Nesterov <oleg@redhat.com>hifive-unleashed-5.1
parent
37ad8aca94
commit
839e3407d9
|
@ -48,7 +48,7 @@ static inline bool try_to_freeze(void)
|
||||||
return __refrigerator(false);
|
return __refrigerator(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern bool freeze_task(struct task_struct *p, bool sig_only);
|
extern bool freeze_task(struct task_struct *p);
|
||||||
extern bool __set_freezable(bool with_signal);
|
extern bool __set_freezable(bool with_signal);
|
||||||
|
|
||||||
#ifdef CONFIG_CGROUP_FREEZER
|
#ifdef CONFIG_CGROUP_FREEZER
|
||||||
|
|
|
@ -206,7 +206,7 @@ static void freezer_fork(struct cgroup_subsys *ss, struct task_struct *task)
|
||||||
|
|
||||||
/* Locking avoids race with FREEZING -> THAWED transitions. */
|
/* Locking avoids race with FREEZING -> THAWED transitions. */
|
||||||
if (freezer->state == CGROUP_FREEZING)
|
if (freezer->state == CGROUP_FREEZING)
|
||||||
freeze_task(task, true);
|
freeze_task(task);
|
||||||
spin_unlock_irq(&freezer->lock);
|
spin_unlock_irq(&freezer->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -274,7 +274,7 @@ static int try_to_freeze_cgroup(struct cgroup *cgroup, struct freezer *freezer)
|
||||||
|
|
||||||
cgroup_iter_start(cgroup, &it);
|
cgroup_iter_start(cgroup, &it);
|
||||||
while ((task = cgroup_iter_next(cgroup, &it))) {
|
while ((task = cgroup_iter_next(cgroup, &it))) {
|
||||||
if (!freeze_task(task, true))
|
if (!freeze_task(task))
|
||||||
continue;
|
continue;
|
||||||
if (frozen(task))
|
if (frozen(task))
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -100,20 +100,17 @@ static void fake_signal_wake_up(struct task_struct *p)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* freeze_task - send a freeze request to given task
|
* freeze_task - send a freeze request to given task
|
||||||
* @p: task to send the request to
|
* @p: task to send the request to
|
||||||
* @sig_only: if set, the request will only be sent if the task has the
|
|
||||||
* PF_FREEZER_NOSIG flag unset
|
|
||||||
* Return value: 'false', if @sig_only is set and the task has
|
|
||||||
* PF_FREEZER_NOSIG set or the task is frozen, 'true', otherwise
|
|
||||||
*
|
*
|
||||||
* The freeze request is sent by setting the tasks's TIF_FREEZE flag and
|
* If @p is freezing, the freeze request is sent by setting %TIF_FREEZE
|
||||||
* either sending a fake signal to it or waking it up, depending on whether
|
* flag and either sending a fake signal to it or waking it up, depending
|
||||||
* or not it has PF_FREEZER_NOSIG set. If @sig_only is set and the task
|
* on whether it has %PF_FREEZER_NOSIG set.
|
||||||
* has PF_FREEZER_NOSIG set (ie. it is a typical kernel thread), its
|
*
|
||||||
* TIF_FREEZE flag will not be set.
|
* RETURNS:
|
||||||
|
* %false, if @p is not freezing or already frozen; %true, otherwise
|
||||||
*/
|
*/
|
||||||
bool freeze_task(struct task_struct *p, bool sig_only)
|
bool freeze_task(struct task_struct *p)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
*/
|
*/
|
||||||
#define TIMEOUT (20 * HZ)
|
#define TIMEOUT (20 * HZ)
|
||||||
|
|
||||||
static int try_to_freeze_tasks(bool sig_only)
|
static int try_to_freeze_tasks(bool user_only)
|
||||||
{
|
{
|
||||||
struct task_struct *g, *p;
|
struct task_struct *g, *p;
|
||||||
unsigned long end_time;
|
unsigned long end_time;
|
||||||
|
@ -37,14 +37,14 @@ static int try_to_freeze_tasks(bool sig_only)
|
||||||
|
|
||||||
end_time = jiffies + TIMEOUT;
|
end_time = jiffies + TIMEOUT;
|
||||||
|
|
||||||
if (!sig_only)
|
if (!user_only)
|
||||||
freeze_workqueues_begin();
|
freeze_workqueues_begin();
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
todo = 0;
|
todo = 0;
|
||||||
read_lock(&tasklist_lock);
|
read_lock(&tasklist_lock);
|
||||||
do_each_thread(g, p) {
|
do_each_thread(g, p) {
|
||||||
if (p == current || !freeze_task(p, sig_only))
|
if (p == current || !freeze_task(p))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -65,7 +65,7 @@ static int try_to_freeze_tasks(bool sig_only)
|
||||||
} while_each_thread(g, p);
|
} while_each_thread(g, p);
|
||||||
read_unlock(&tasklist_lock);
|
read_unlock(&tasklist_lock);
|
||||||
|
|
||||||
if (!sig_only) {
|
if (!user_only) {
|
||||||
wq_busy = freeze_workqueues_busy();
|
wq_busy = freeze_workqueues_busy();
|
||||||
todo += wq_busy;
|
todo += wq_busy;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue