cgroup: after killing cgroup processes, ensure the group is really dead gone. wait for 3s at max

This commit is contained in:
Lennart Poettering 2010-11-18 02:37:35 +01:00
parent 2db9ecac35
commit 9f4527411b
1 changed files with 7 additions and 6 deletions

View File

@ -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;