From a05fcc794be4725361bc38ed85b60586619f4b9f Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Tue, 6 May 2014 19:19:45 -0700 Subject: [PATCH] fix(sys-apps/systemd): Fix hangs/failures in initrd This bug manifested itself as a silent hang without the other reload fix. With that fix it manifests itself as fsck failing because it is started before the disk/by-* symlinks are created. --- ...-serialization-methods-to-enable-job.patch | 57 +++++++++++++++++++ ...md-212-r5.ebuild => systemd-212-r6.ebuild} | 3 + 2 files changed, 60 insertions(+) create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/212-0003-device-add-stub-serialization-methods-to-enable-job.patch rename sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/{systemd-212-r5.ebuild => systemd-212-r6.ebuild} (99%) diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/212-0003-device-add-stub-serialization-methods-to-enable-job.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/212-0003-device-add-stub-serialization-methods-to-enable-job.patch new file mode 100644 index 0000000000..929d312ae6 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/212-0003-device-add-stub-serialization-methods-to-enable-job.patch @@ -0,0 +1,57 @@ +From 5572e8cef02a1d769a94c5da4c407c0f472535f2 Mon Sep 17 00:00:00 2001 +From: Michael Marineau +Date: Tue, 6 May 2014 18:39:59 -0700 +Subject: [PATCH] device: Add stub serialization methods to enable job + serialization. + +If a unit type doesn't provide its own serialization methods then +none of the generic serialization will happen either. For devices this +means jobs used for waiting on device dependencies are dropped during +reloads, breaking dependency state that was relying on those jobs. +--- + src/core/device.c | 22 ++++++++++++++++++++++ + 1 file changed, 22 insertions(+) + +diff --git a/src/core/device.c b/src/core/device.c +index 444286e..07c0860 100644 +--- a/src/core/device.c ++++ b/src/core/device.c +@@ -130,6 +130,25 @@ static void device_dump(Unit *u, FILE *f, const char *prefix) { + prefix, strna(d->sysfs)); + } + ++static int device_serialize(Unit *u, FILE *f, FDSet *fds) { ++ assert(u); ++ assert(f); ++ assert(fds); ++ ++ return 0; ++} ++ ++static int device_deserialize_item(Unit *u, const char *key, const char *value, FDSet *fds) { ++ assert(u); ++ assert(key); ++ assert(value); ++ assert(fds); ++ ++ log_debug("Unknown serialization key '%s'", key); ++ ++ return 0; ++} ++ + _pure_ static UnitActiveState device_active_state(Unit *u) { + assert(u); + +@@ -693,6 +712,9 @@ const UnitVTable device_vtable = { + + .dump = device_dump, + ++ .serialize = device_serialize, ++ .deserialize_item = device_deserialize_item, ++ + .active_state = device_active_state, + .sub_state_to_string = device_sub_state_to_string, + +-- +1.8.5.5 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-212-r5.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-212-r6.ebuild similarity index 99% rename from sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-212-r5.ebuild rename to sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-212-r6.ebuild index 6fbca3c1c8..187e3770e4 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-212-r5.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-212-r6.ebuild @@ -119,6 +119,9 @@ fi # fix stuck jobs after daemon-reload epatch "${FILESDIR}"/212-0002-unit-add-waiting-jobs-to-run-queue-in-unit_coldplug.patch + # fix broken device dependencies after daemon-reload + epatch "${FILESDIR}"/212-0003-device-add-stub-serialization-methods-to-enable-job.patch + # CoreOs specific hacks^Wfeatures epatch "${FILESDIR}"/211-handle-empty-etc-os-release.patch