chiark / gitweb /
Fix vacuum logic error
authorJan Alexander Steffens (heftig) <jan.steffens@gmail.com>
Wed, 20 Mar 2013 20:32:05 +0000 (21:32 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 22 Mar 2013 03:24:38 +0000 (23:24 -0400)
The vacuum code used to stop vacuuming after one deletion, even
when max_use was still exceeded.

Also make usage a uint64_t, as the code already pretends it is one.

Signed-off-by: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
src/journal/journal-vacuum.c

index 731f6c770f8938ae9982ea7573eed70d9f00a976..4a3a5a9e63c5579d3f1d3df265c6f4866315f1b2 100644 (file)
@@ -36,7 +36,7 @@
 #include "util.h"
 
 struct vacuum_info {
-        off_t usage;
+        uint64_t usage;
         char *filename;
 
         uint64_t realtime;
@@ -293,7 +293,7 @@ int journal_directory_vacuum(
                 if (unlinkat(dirfd(d), list[i].filename, 0) >= 0) {
                         log_debug("Deleted archived journal %s/%s.", directory, list[i].filename);
 
-                        if ((uint64_t) list[i].usage > sum)
+                        if (list[i].usage < sum)
                                 sum -= list[i].usage;
                         else
                                 sum = 0;