7f93bc2
From 54fe753272e47c6fd39aa14854a83a94fa948850 Mon Sep 17 00:00:00 2001
a59965a
From: Lennart Poettering <lennart@poettering.net>
a59965a
Date: Fri, 16 May 2014 01:15:03 +0200
a59965a
Subject: [PATCH] core: make sure to serialize jobs for all units
a59965a
a59965a
Previously we wouldn't serialize jobs for units that themselves have
a59965a
nothing to serialize.
a59965a
a59965a
http://lists.freedesktop.org/archives/systemd-devel/2014-May/019051.html
a59965a
(cherry picked from commit 9bdb98c59451ed090f8d35d470a54710f389ce71)
a59965a
(cherry picked from commit 75ee3c9da1441e0f67d502e56e9167f0ef23201b)
a59965a
a59965a
Conflicts:
a59965a
	src/core/unit.c
a59965a
---
a59965a
 src/core/manager.c |  3 ---
a59965a
 src/core/unit.c    | 22 ++++++++++------------
a59965a
 2 files changed, 10 insertions(+), 15 deletions(-)
a59965a
a59965a
diff --git a/src/core/manager.c b/src/core/manager.c
1cc3df3
index 1e7dc3835c..e75550bb4e 100644
a59965a
--- a/src/core/manager.c
a59965a
+++ b/src/core/manager.c
a59965a
@@ -2166,9 +2166,6 @@ int manager_serialize(Manager *m, FILE *f, FDSet *fds, bool switching_root) {
a59965a
                 if (u->id != t)
a59965a
                         continue;
a59965a
 
a59965a
-                if (!unit_can_serialize(u))
a59965a
-                        continue;
a59965a
-
a59965a
                 /* Start marker */
a59965a
                 fputs(u->id, f);
a59965a
                 fputc('\n', f);
a59965a
diff --git a/src/core/unit.c b/src/core/unit.c
1cc3df3
index 29782aa684..5226963522 100644
a59965a
--- a/src/core/unit.c
a59965a
+++ b/src/core/unit.c
a59965a
@@ -2293,12 +2293,11 @@ int unit_serialize(Unit *u, FILE *f, FDSet *fds, bool serialize_jobs) {
a59965a
         assert(f);
a59965a
         assert(fds);
a59965a
 
a59965a
-        if (!unit_can_serialize(u))
a59965a
-                return 0;
a59965a
-
a59965a
-        r = UNIT_VTABLE(u)->serialize(u, f, fds);
a59965a
-        if (r < 0)
a59965a
-                return r;
a59965a
+        if (unit_can_serialize(u)) {
a59965a
+                r = UNIT_VTABLE(u)->serialize(u, f, fds);
a59965a
+                if (r < 0)
a59965a
+                        return r;
a59965a
+        }
a59965a
 
a59965a
         dual_timestamp_serialize(f, "inactive-exit-timestamp", &u->inactive_exit_timestamp);
a59965a
         dual_timestamp_serialize(f, "active-enter-timestamp", &u->active_enter_timestamp);
a59965a
@@ -2365,9 +2364,6 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) {
a59965a
         assert(f);
a59965a
         assert(fds);
a59965a
 
a59965a
-        if (!unit_can_serialize(u))
a59965a
-                return 0;
a59965a
-
a59965a
         for (;;) {
a59965a
                 char line[LINE_MAX], *l, *v;
a59965a
                 size_t k;
a59965a
@@ -2480,9 +2476,11 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) {
a59965a
                         continue;
a59965a
                 }
a59965a
 
a59965a
-                r = UNIT_VTABLE(u)->deserialize_item(u, l, v, fds);
a59965a
-                if (r < 0)
a59965a
-                        return r;
a59965a
+                if (unit_can_serialize(u)) {
a59965a
+                        r = UNIT_VTABLE(u)->deserialize_item(u, l, v, fds);
a59965a
+                        if (r < 0)
a59965a
+                                return r;
a59965a
+                }
a59965a
         }
a59965a
 }
a59965a