chiark / gitweb /
readahead: ignore if files are removed during collection or before replay
authorLennart Poettering <lennart@poettering.net>
Tue, 4 Jan 2011 22:42:58 +0000 (23:42 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 4 Jan 2011 22:42:58 +0000 (23:42 +0100)
src/readahead-collect.c
src/readahead-replay.c

index a9f544d..ac46c7b 100644 (file)
@@ -92,6 +92,10 @@ static int pack_file(FILE *pack, const char *fn, bool on_btrfs) {
         assert(fn);
 
         if ((fd = open(fn, O_RDONLY|O_CLOEXEC|O_NOATIME|O_NOCTTY|O_NOFOLLOW)) < 0) {
+
+                if (errno == ENOENT)
+                        return 0;
+
                 log_warning("open(%s) failed: %m", fn);
                 r = -errno;
                 goto finish;
index ab0c808..87f2e59 100644 (file)
@@ -60,9 +60,12 @@ static int unpack_file(FILE *pack) {
         char_array_0(fn);
         truncate_nl(fn);
 
-        if ((fd = open(fn, O_RDONLY|O_CLOEXEC|O_NOATIME|O_NOCTTY|O_NOFOLLOW)) < 0)
-                log_warning("open(%s) failed: %m", fn);
-        else if (file_verify(fd, fn, arg_file_size_max, &st) <= 0) {
+        if ((fd = open(fn, O_RDONLY|O_CLOEXEC|O_NOATIME|O_NOCTTY|O_NOFOLLOW)) < 0) {
+
+                if (errno != ENOENT)
+                        log_warning("open(%s) failed: %m", fn);
+
+        } else if (file_verify(fd, fn, arg_file_size_max, &st) <= 0) {
                 close_nointr_nofail(fd);
                 fd = -1;
         }
@@ -136,7 +139,7 @@ static int replay(const char *root) {
         }
 
         if ((!(pack = fopen(pack_fn, "re")))) {
-                if (errno == -ENOENT)
+                if (errno == ENOENT)
                         log_debug("No pack file found.");
                 else {
                         log_error("Failed to open pack file: %m");