Use cgroup.kill in cgroup_cleanup when possible
The old code is moved to a cgroup_fallback_cleanup function and only called if cgroup2_kill fails. This fixes #454.
This commit is contained in:
committed by
William Hubbs
parent
cd4bbdcd62
commit
eaa42da9a6
@@ -206,10 +206,19 @@ cgroup2_set_limits()
|
||||
return 0
|
||||
}
|
||||
|
||||
cgroup_cleanup()
|
||||
{
|
||||
cgroup_running || return 0
|
||||
ebegin "Starting cgroups cleanup"
|
||||
cgroup2_kill_cgroup() {
|
||||
local cgroup_path
|
||||
cgroup_path="$(cgroup2_find_path)"
|
||||
[ -z "${cgroup_path}" ] && return 1
|
||||
rc_cgroup_path="${cgroup_path}/${RC_SVCNAME}"
|
||||
if [ -f "${rc_cgroup_path}"/cgroup.kill ]; then
|
||||
printf "%d" 1 > "${rc_cgroup_path}"/cgroup.kill
|
||||
fi
|
||||
return
|
||||
}
|
||||
|
||||
cgroup_fallback_cleanup() {
|
||||
ebegin "Starting fallback cgroups cleanup"
|
||||
local loops=0
|
||||
cgroup_get_pids
|
||||
if [ -n "${cgroup_pids}" ]; then
|
||||
@@ -229,6 +238,14 @@ cgroup_cleanup()
|
||||
kill -s KILL ${cgroup_pids} 2> /dev/null
|
||||
fi
|
||||
fi
|
||||
eend $?
|
||||
}
|
||||
|
||||
cgroup_cleanup()
|
||||
{
|
||||
cgroup_running || return 0
|
||||
ebegin "Starting cgroups cleanup"
|
||||
cgroup2_kill_cgroup || cgroup_fallback_cleanup
|
||||
cgroup2_remove
|
||||
cgroup_get_pids
|
||||
[ -z "${cgroup_pids}" ]
|
||||
|
Reference in New Issue
Block a user