]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: introduce unit_destroy_runtime_directory()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 22 Aug 2019 14:49:49 +0000 (23:49 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 22 Aug 2019 14:50:52 +0000 (23:50 +0900)
Currently `unit_will_restart()` can return true only when the unit is
service. Hence, should not change anything.

src/core/service.c
src/core/unit.c
src/core/unit.h

index d8cfb4014555aa4b6379c67d2fb3ebfc03773c87..d264b9a2811de0bb39654019388f9431819bbf97 100644 (file)
@@ -1789,10 +1789,8 @@ static void service_enter_dead(Service *s, ServiceResult f, bool allow_restart)
         /* We want fresh tmpdirs in case service is started again immediately */
         s->exec_runtime = exec_runtime_unref(s->exec_runtime, true);
 
-        if (s->exec_context.runtime_directory_preserve_mode == EXEC_PRESERVE_NO ||
-            (s->exec_context.runtime_directory_preserve_mode == EXEC_PRESERVE_RESTART && !service_will_restart(UNIT(s))))
-                /* Also, remove the runtime directory */
-                exec_context_destroy_runtime_directory(&s->exec_context, UNIT(s)->manager->prefix[EXEC_DIRECTORY_RUNTIME]);
+        /* Also, remove the runtime directory */
+        unit_destroy_runtime_directory(UNIT(s), &s->exec_context);
 
         /* Get rid of the IPC bits of the user */
         unit_unref_uid_gid(UNIT(s), true);
index 31ed473f91057829b77e620a7caa00f6394b5bb3..ff979ffdd60917b5c34c1a49252c1a036f035b68 100644 (file)
@@ -5880,6 +5880,12 @@ int unit_test_trigger_loaded(Unit *u) {
         return 0;
 }
 
+void unit_destroy_runtime_directory(Unit *u, const ExecContext *context) {
+        if (context->runtime_directory_preserve_mode == EXEC_PRESERVE_NO ||
+            (context->runtime_directory_preserve_mode == EXEC_PRESERVE_RESTART && !unit_will_restart(u)))
+                exec_context_destroy_runtime_directory(context, u->manager->prefix[EXEC_DIRECTORY_RUNTIME]);
+}
+
 int unit_clean(Unit *u, ExecCleanMask mask) {
         UnitActiveState state;
 
index 4732d72202979548befd5e946b675e12842ba8d6..00436dc6641fd8d83e90a621c40f0b5b94328c69 100644 (file)
@@ -860,6 +860,7 @@ int unit_failure_action_exit_status(Unit *u);
 
 int unit_test_trigger_loaded(Unit *u);
 
+void unit_destroy_runtime_directory(Unit *u, const ExecContext *context);
 int unit_clean(Unit *u, ExecCleanMask mask);
 int unit_can_clean(Unit *u, ExecCleanMask *ret_mask);