chiark / gitweb /
manager: fix GC logic
authorLennart Poettering <lennart@poettering.net>
Thu, 22 Apr 2010 00:41:14 +0000 (02:41 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 22 Apr 2010 00:41:14 +0000 (02:41 +0200)
manager.c

index f10345b..5cb5c3d 100644 (file)
--- a/manager.c
+++ b/manager.c
@@ -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);