From: Lennart Poettering Date: Wed, 10 Jul 2013 19:13:56 +0000 (+0200) Subject: unit: save description/slice of transient units to /run X-Git-Tag: v206~159 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=b9316fb0f39fff3df792e4e72eb491ec4265b91f unit: save description/slice of transient units to /run This is necessary so that these properties survive a daemon reload. --- diff --git a/src/core/dbus-unit.c b/src/core/dbus-unit.c index 4605b2fe0..e07a28e32 100644 --- a/src/core/dbus-unit.c +++ b/src/core/dbus-unit.c @@ -794,6 +794,7 @@ static int bus_unit_set_transient_property( return -EINVAL; if (mode != UNIT_CHECK) { + _cleanup_free_ char *contents = NULL; const char *description; dbus_message_iter_get_basic(i, &description); @@ -801,6 +802,12 @@ static int bus_unit_set_transient_property( r = unit_set_description(u, description); if (r < 0) return r; + + contents = strjoin("[Unit]\nDescription=", description, "\n", NULL); + if (!contents) + return -ENOMEM; + + unit_write_drop_in(u, mode, "Description", contents); } return 1; @@ -818,6 +825,8 @@ static int bus_unit_set_transient_property( if (mode != UNIT_CHECK) unit_ref_unset(&u->slice); } else { + _cleanup_free_ char *contents = NULL; + r = manager_load_unit(u->manager, s, NULL, error, &slice); if (r < 0) return r; @@ -827,6 +836,12 @@ static int bus_unit_set_transient_property( if (mode != UNIT_CHECK) unit_ref_set(&u->slice, slice); + + contents = strjoin("[", UNIT_VTABLE(u)->private_section, "]\nSlice=", s, NULL); + if (!contents) + return -ENOMEM; + + unit_write_drop_in(u, mode, "Slice", contents); } return 1; } diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4 index 2325d6aa9..76fc9c48a 100644 --- a/src/core/load-fragment-gperf.gperf.m4 +++ b/src/core/load-fragment-gperf.gperf.m4 @@ -259,6 +259,8 @@ Path.MakeDirectory, config_parse_bool, 0, Path.DirectoryMode, config_parse_mode, 0, offsetof(Path, directory_mode) m4_dnl CGROUP_CONTEXT_CONFIG_ITEMS(Slice)m4_dnl +m4_dnl +CGROUP_CONTEXT_CONFIG_ITEMS(Scope)m4_dnl m4_dnl The [Install] section is ignored here. Install.Alias, NULL, 0, 0 Install.WantedBy, NULL, 0, 0