An unexpected behavior in systemd has been introduced between the
versions 225 and 229: when non-existing units are specified in
After/Before clauses, systemd fails if the After clause is listed
first. What is expected is that systemd simply ignores these
clauses. Because the After clause is specified before the Before
clause in virSystemdCreateMachine and because libvirt does not
tolerate missing the systemd-machined registration, it leads to
fatal boot failures, whereas instances could start properly without
these units - only the shutdown workflow could be affected.
This fixes the following error in some particular cases:
`libvirtError: Cannot set property Before, or unknown
property.`.
If accepted, this bug fix should be backported.
https://bugzilla.redhat.com/show_bug.cgi?id=1350909
---
src/util/virsystemd.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/util/virsystemd.c b/src/util/virsystemd.c
index 871db7e..3a146f8 100644
--- a/src/util/virsystemd.c
+++ b/src/util/virsystemd.c
@@ -365,8 +365,8 @@ int virSystemdCreateMachine(const char
*name,
nnicindexes,
nicindexes,
3,
"Slice", "s",
slicename,
-
"After", "as", 1,
"libvirtd.service",
-
"Before", "as", 1,
"libvirt-guests.service") < 0)
+
"Before", "as", 1,
"libvirt-guests.service",
+
"After", "as", 1,
"libvirtd.service") < 0)
goto cleanup;
if (error.level == VIR_ERR_ERROR)
{
@@ -406,8 +406,8 @@ int virSystemdCreateMachine(const char
*name,
rootdir ? rootdir :
"",
3,
"Slice", "s",
slicename,
-
"After", "as", 1,
"libvirtd.service",
-
"Before", "as", 1,
"libvirt-guests.service") < 0)
+
"Before", "as", 1,
"libvirt-guests.service",
+
"After", "as", 1,
"libvirtd.service") < 0)
goto cleanup;
}
--