]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: restore initialization of u->source_mtime
authorFranck Bui <fbui@suse.com>
Thu, 5 Sep 2019 14:53:50 +0000 (16:53 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 16 Sep 2019 13:53:52 +0000 (15:53 +0200)
During the rework of unit file loading, commit e8630e695232bdfc dropped the
initialization u->source_mtime. This had the bad side effect that generated
units always needed daemon reloading.

src/core/load-fragment.c

index 8eaf8b33e9828d6924173fb3593be6eac0d9bca1..a7951a57579e56d2c78b1d90c3c24561e2957a5e 100644 (file)
@@ -4594,6 +4594,7 @@ static int merge_by_names(Unit **u, Set *names, const char *id) {
 int unit_load_fragment(Unit *u) {
         const char *fragment;
         _cleanup_set_free_free_ Set *names = NULL;
+        struct stat st;
         int r;
 
         assert(u);
@@ -4625,7 +4626,6 @@ int unit_load_fragment(Unit *u) {
         if (fragment) {
                 /* Open the file, check if this is a mask, otherwise read. */
                 _cleanup_fclose_ FILE *f = NULL;
-                struct stat st;
 
                 /* Try to open the file name. A symlink is OK, for example for linked files or masks. We
                  * expect that all symlinks within the lookup paths have been already resolved, but we don't
@@ -4660,6 +4660,13 @@ int unit_load_fragment(Unit *u) {
                 }
         }
 
+        if (u->source_path) {
+                if (stat(u->source_path, &st) >= 0)
+                        u->source_mtime = timespec_load(&st.st_mtim);
+                else
+                        u->source_mtime = 0;
+        }
+
         /* We do the merge dance here because for some unit types, the unit might have aliases which are not
          * declared in the file system. In particular, this is true (and frequent) for device and swap units.
          */