From f3564f00f5070b8f72f9527d10f432091326f133 Mon Sep 17 00:00:00 2001 From: Franck Bui Date: Thu, 5 Sep 2019 16:53:50 +0200 Subject: [PATCH] core: restore initialization of u->source_mtime 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. (cherry picked from commit 5a1c1b534fe13e60ef9bce0dc680ad6f2a0c577f) (cherry picked from commit 6823c907cfda84958fe223ba1a14a48fcd829458) Gbp-Pq: Name core-restore-initialization-of-u-source_mtime.patch --- src/core/load-fragment.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 8eaf8b33..a7951a57 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -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. */ -- 2.30.2