]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
tmpfiles: clean up restoring of access times after aging a bit
authorLennart Poettering <lennart@poettering.net>
Fri, 18 Jan 2019 14:51:13 +0000 (15:51 +0100)
committerLennart Poettering <lennart@poettering.net>
Fri, 15 Feb 2019 16:16:54 +0000 (17:16 +0100)
Let's minimize file scope, use compund literals and only use LOG_WARN
for errors we ignore.

src/tmpfiles/tmpfiles.c

index b66765b407ee5c1ca9545dd118e84a5a3676136e..50a0243d98c717dd050b83f09bd7f4c93e53205f 100644 (file)
@@ -525,7 +525,6 @@ static int dir_cleanup(
                 bool keep_this_level) {
 
         struct dirent *dent;
-        struct timespec times[2];
         bool deleted = false;
         int r = 0;
 
@@ -722,21 +721,22 @@ static int dir_cleanup(
 
 finish:
         if (deleted) {
-                usec_t age1, age2;
                 char a[FORMAT_TIMESTAMP_MAX], b[FORMAT_TIMESTAMP_MAX];
-
-                /* Restore original directory timestamps */
-                times[0] = ds->st_atim;
-                times[1] = ds->st_mtim;
+                usec_t age1, age2;
 
                 age1 = timespec_load(&ds->st_atim);
                 age2 = timespec_load(&ds->st_mtim);
+
                 log_debug("Restoring access and modification time on \"%s\": %s, %s",
                           p,
                           format_timestamp_us(a, sizeof(a), age1),
                           format_timestamp_us(b, sizeof(b), age2));
-                if (futimens(dirfd(d), times) < 0)
-                        log_error_errno(errno, "utimensat(%s): %m", p);
+
+                /* Restore original directory timestamps */
+                if (futimens(dirfd(d), (struct timespec[]) {
+                                ds->st_atim,
+                                ds->st_mtim }) < 0)
+                        log_warning_errno(errno, "Failed to revert timestamps of '%s', ignoring: %m", p);
         }
 
         return r;