mirror of
https://github.com/systemd/systemd.git
synced 2025-01-11 09:18:07 +03:00
cgroup: after killing cgroup processes, ensure the group is really dead gone. wait for 3s at max
This commit is contained in:
parent
2db9ecac35
commit
9f4527411b
@ -321,16 +321,17 @@ int cg_kill_recursive_and_wait(const char *controller, const char *path, bool re
|
||||
assert(controller);
|
||||
|
||||
/* This safely kills all processes; first it sends a SIGTERM,
|
||||
* then checks 8 times after 50ms whether the group is
|
||||
* now empty, and finally kills everything that is left with
|
||||
* SIGKILL */
|
||||
* then checks 8 times after 200ms whether the group is now
|
||||
* empty, then kills everything that is left with SIGKILL and
|
||||
* finally checks 5 times after 200ms each whether the group
|
||||
* is finally empty. */
|
||||
|
||||
for (i = 0; i < 10; i++) {
|
||||
for (i = 0; i < 15; i++) {
|
||||
int sig, r;
|
||||
|
||||
if (i <= 0)
|
||||
sig = SIGTERM;
|
||||
else if (i >= 9)
|
||||
else if (i == 9)
|
||||
sig = SIGKILL;
|
||||
else
|
||||
sig = 0;
|
||||
@ -338,7 +339,7 @@ int cg_kill_recursive_and_wait(const char *controller, const char *path, bool re
|
||||
if ((r = cg_kill_recursive(controller, path, sig, true, rem, NULL)) <= 0)
|
||||
return r;
|
||||
|
||||
usleep(50 * USEC_PER_MSEC);
|
||||
usleep(200 * USEC_PER_MSEC);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user