diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-11-18 02:37:35 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-11-18 02:37:35 +0100 |
commit | 9f4527411bbba4c36d27509879d0340a546600ce (patch) | |
tree | e43e3c1116724794753f6fcfedd5719b3cd8808d /src | |
parent | 2db9ecac35f9f18b9cd76e5026c31c5eb015ac8c (diff) |
cgroup: after killing cgroup processes, ensure the group is really dead gone. wait for 3s at max
Diffstat (limited to 'src')
-rw-r--r-- | src/cgroup-util.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/cgroup-util.c b/src/cgroup-util.c index ccc94f86a1..4cf184ae1b 100644 --- a/src/cgroup-util.c +++ b/src/cgroup-util.c @@ -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; |