From: Daan De Meyer Date: Thu, 10 Oct 2024 20:37:39 +0000 (+0200) Subject: rpm/systemd-update-helper: Use systemctl reload to reexec/reload user managers X-Git-Tag: v257-rc1~261^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2d0af8bc354f4a1429cebedfb387af72c88720a0;p=thirdparty%2Fsystemd.git rpm/systemd-update-helper: Use systemctl reload to reexec/reload user managers Let's always use systemctl reload to reexec and reload user managers now that it always implies a reexec. This moves all the job management logic to pid 1 instead of bash and reduces the complexity of the logic as we remove systemd-run, pam and systemd-stdio-bridge from the equation. --- diff --git a/src/rpm/systemd-update-helper.in b/src/rpm/systemd-update-helper.in index c81e16c3d3f..8af91493526 100755 --- a/src/rpm/systemd-update-helper.in +++ b/src/rpm/systemd-update-helper.in @@ -107,25 +107,13 @@ case "$command" in [ -d /run/systemd/system ] || exit 0 - users=$(systemctl list-units 'user@*' --legend=no | sed -n -r 's/.*user@([0-9]+).service.*/\1/p') - - if [[ "$command" =~ reexec ]]; then - for user in $users; do - SYSTEMD_BUS_TIMEOUT={{UPDATE_HELPER_USER_TIMEOUT_SEC}}s \ - systemctl --user -M "$user@" daemon-reexec & - done - wait - fi - - if [[ "$command" =~ reload ]]; then - for user in $users; do - SYSTEMD_BUS_TIMEOUT={{UPDATE_HELPER_USER_TIMEOUT_SEC}}s \ - systemctl --user -M "$user@" daemon-reload & - done - wait + if [[ "$command" =~ reexec|reload ]]; then + SYSTEMD_BUS_TIMEOUT={{UPDATE_HELPER_USER_TIMEOUT_SEC}}s systemctl reload "user@*.service" fi if [[ "$command" =~ restart ]]; then + users=$(systemctl list-units 'user@*' --legend=no | sed -n -r 's/.*user@([0-9]+).service.*/\1/p') + for user in $users; do SYSTEMD_BUS_TIMEOUT={{UPDATE_HELPER_USER_TIMEOUT_SEC}}s \ systemctl --user -M "$user@" reload-or-restart --marked &