diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-04-22 02:41:14 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-04-22 02:41:14 +0200 |
commit | c9c0cadbf8d8e4c1b99c35a8150c08558f361ebd (patch) | |
tree | c491abe527fb12b2dedb178a22fac6f0d6d1961f | |
parent | 15ae422b7471cf6f41ccf450243d8afd8ea0a054 (diff) |
manager: fix GC logic
-rw-r--r-- | manager.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -405,7 +405,7 @@ static void unit_gc_sweep(Unit *u, int gc_marker) { u->meta.gc_marker == -gc_marker) return; - if (!u->meta.in_cleanup_queue) + if (u->meta.in_cleanup_queue) goto bad; if (unit_check_gc(u)) @@ -441,8 +441,10 @@ static unsigned manager_dispatch_gc_queue(Manager *m) { log_debug("Running GC..."); - gc_marker = m->gc_marker; - m->gc_marker = MIN(0, m->gc_marker + 1); + gc_marker = ++m->gc_marker; + + if (m->gc_marker < 0) + m->gc_marker = 1; while ((meta = m->gc_queue)) { assert(meta->in_gc_queue); |