mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2024-12-28 16:52:18 +00:00
freezer, sched: report the frozen task stat as 'D'
Before the commitf5d39b0208
("freezer,sched: Rewrite core freezer logic"), the frozen task stat was reported as 'D' in cgroup v1. However, after rewriting core freezer logic, the frozen task stat is reported as 'R'. This is confusing, especially when a task with stat of 'S' is frozen. This can be reproduced as bellow step: cd /sys/fs/cgroup/freezer/ mkdir test sleep 1000 & [1] 739 // task whose stat is 'S' echo 739 > test/cgroup.procs echo FROZEN > test/freezer.state ps -aux | grep 739 root 739 0.1 0.0 8376 1812 pts/0 R 10:56 0:00 sleep 1000 As shown above, a task whose stat is 'S' was changed to 'R' when it was frozen. To solve this issue, simply maintain the same reported state as before the rewrite. Fixes:f5d39b0208
("freezer,sched: Rewrite core freezer logic") Signed-off-by: Chen Ridong <chenridong@huawei.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by: Tejun Heo <tj@kernel.org> Acked-by: Michal Koutný <mkoutny@suse.com> Link: https://lore.kernel.org/r/20241217004818.3200515-1-chenridong@huaweicloud.com
This commit is contained in:
parent
78d4f34e21
commit
2357a7f934
@ -1637,8 +1637,9 @@ static inline unsigned int __task_state_index(unsigned int tsk_state,
|
||||
* We're lying here, but rather than expose a completely new task state
|
||||
* to userspace, we can make this appear as if the task has gone through
|
||||
* a regular rt_mutex_lock() call.
|
||||
* Report the frozen task uninterruptible.
|
||||
*/
|
||||
if (tsk_state & TASK_RTLOCK_WAIT)
|
||||
if ((tsk_state & TASK_RTLOCK_WAIT) || (tsk_state & TASK_FROZEN))
|
||||
state = TASK_UNINTERRUPTIBLE;
|
||||
|
||||
return fls(state);
|
||||
|
Loading…
Reference in New Issue
Block a user