From: Lennart Poettering Date: Thu, 18 Nov 2010 01:37:35 +0000 (+0100) Subject: cgroup: after killing cgroup processes, ensure the group is really dead gone. wait... X-Git-Tag: v13~11 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=9f4527411bbba4c36d27509879d0340a546600ce;hp=2db9ecac35f9f18b9cd76e5026c31c5eb015ac8c;p=elogind.git cgroup: after killing cgroup processes, ensure the group is really dead gone. wait for 3s at max --- diff --git a/src/cgroup-util.c b/src/cgroup-util.c index ccc94f86a..4cf184ae1 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;