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;
     }

--
1.8.3.1