From: Zbigniew Jędrzejewski-Szmek Date: Tue, 4 Apr 2023 10:05:16 +0000 (+0200) Subject: manager: remove transient unit directory during startup X-Git-Tag: v254-rc1~816 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=45f540a2974dc732820d20a0e73cfffc94766a70;p=thirdparty%2Fsystemd.git manager: remove transient unit directory during startup I was testing transient units and user@.service crashed. I restarted it, and tried to create a transient unit. It failed because /run/user/1000/systemd/transient/ remained after the previous aborted run: Failed to start transient service unit: Unit run-u0.service was already loaded or has a fragment file. Remove the directory during initial startup so we don't get confused by our own files. --- diff --git a/src/core/manager.c b/src/core/manager.c index dcc10266ac6..47a502df7fb 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -1861,6 +1861,10 @@ int manager_startup(Manager *m, FILE *serialization, FDSet *fds, const char *roo /* This block is (optionally) done with the reloading counter bumped */ _unused_ _cleanup_(manager_reloading_stopp) Manager *reloading = NULL; + /* Make sure we don't have a left-over from a previous run */ + if (!serialization) + (void) rm_rf(m->lookup_paths.transient, 0); + /* If we will deserialize make sure that during enumeration this is already known, so we increase the * counter here already */ if (serialization)