From f8f621821a30b5b7e6c69dfb770e1c4cbc3db715 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 5 Sep 2022 15:14:11 +0200 Subject: [PATCH 1/2] homed: don't wait indefinitely for workers on exit Let's put some time-limit on it. Fixes: #22901 --- src/home/homed-home.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/home/homed-home.c b/src/home/homed-home.c index 8a389f7216..2b7c18d32f 100644 --- a/src/home/homed-home.c +++ b/src/home/homed-home.c @@ -3149,13 +3149,21 @@ int home_set_current_message(Home *h, sd_bus_message *m) { } int home_wait_for_worker(Home *h) { + int r; + assert(h); if (h->worker_pid <= 0) return 0; log_info("Worker process for home %s is still running while exiting. Waiting for it to finish.", h->user_name); - (void) wait_for_terminate(h->worker_pid, NULL); + + r = wait_for_terminate_with_timeout(h->worker_pid, 30 * USEC_PER_SEC); + if (r == -ETIMEDOUT) + log_warning_errno(r, "Waiting for worker process for home %s timed out. Ignoring.", h->user_name); + else + log_warning_errno(r, "Failed to wait for worker process for home %s. Ignoring.", h->user_name); + (void) hashmap_remove_value(h->manager->homes_by_worker_pid, PID_TO_PTR(h->worker_pid), h); h->worker_pid = 0; return 1; From d3d2dd5e4f07c5d513c06df69f2c214681ddcd2a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 5 Sep 2022 15:15:36 +0200 Subject: [PATCH 2/2] units: prolong the stop timeout for homed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Let's give IO/resizing/… more time then usual. Fixes: #22901 --- units/systemd-homed.service.in | 1 + 1 file changed, 1 insertion(+) diff --git a/units/systemd-homed.service.in b/units/systemd-homed.service.in index 9ccfbfe5ab..52caa4e22e 100644 --- a/units/systemd-homed.service.in +++ b/units/systemd-homed.service.in @@ -33,6 +33,7 @@ StateDirectory=systemd/home SystemCallArchitectures=native SystemCallErrorNumber=EPERM SystemCallFilter=@system-service @mount +TimeoutStopSec=3min {{SERVICE_WATCHDOG}} [Install]