diff options
author | Lennart Poettering <lennart@poettering.net> | 2020-09-21 18:25:46 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2020-09-30 14:37:52 +0200 |
commit | d1f6e01e4743ae94740314eeb46a162112ef4599 (patch) | |
tree | dcf2a1d9ea84f17554b398f04b522179c624932e /units | |
parent | 626fb9f30195f2b6b25bb1e778096c6e2348ad83 (diff) | |
download | systemd-d1f6e01e4743ae94740314eeb46a162112ef4599.tar.gz |
homed: explicitly deactivate all home directories on shutdown
Let's explicitly deactivate all home dirs on shutdown, in order to
properly synchronizing unmounting and avoiding blocking devices.
Previously, we'd rely on automatic deactivation when home directories
become unused. However, that scheme is asynchronous, and ongoing
deactviations might conflicts with attempts to unmount /home. Let's fix
that by providing an explicit service systemd-homed-activate.service
whose only job is to have a ExecStop= line that explicitly deactivates
all home directories on shutdown. This service can the be ordered after
home.mount and similar, ensuring that we'll first deactivate all homes
before deactivating /home itself during shutdown.
This is kept separate from systemd-homed.service so that it is possible
to restart systemd-homed.service without deactivating all home
directories.
Fixes: #16842
Diffstat (limited to 'units')
-rw-r--r-- | units/meson.build | 1 | ||||
-rw-r--r-- | units/systemd-homed-activate.service | 23 | ||||
-rw-r--r-- | units/systemd-homed.service.in | 2 |
3 files changed, 25 insertions, 1 deletions
diff --git a/units/meson.build b/units/meson.build index 275daad3f4..08c39c99b3 100644 --- a/units/meson.build +++ b/units/meson.build @@ -102,6 +102,7 @@ units = [ ['systemd-firstboot.service', 'ENABLE_FIRSTBOOT', 'sysinit.target.wants/'], ['systemd-halt.service', ''], + ['systemd-homed-activate.service', 'ENABLE_HOMED'], ['systemd-initctl.socket', 'HAVE_SYSV_COMPAT', 'sockets.target.wants/'], ['systemd-journal-catalog-update.service', '', diff --git a/units/systemd-homed-activate.service b/units/systemd-homed-activate.service new file mode 100644 index 0000000000..3a5057d3aa --- /dev/null +++ b/units/systemd-homed-activate.service @@ -0,0 +1,23 @@ +# SPDX-License-Identifier: LGPL-2.1+ +# +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Home Area Activation +Documentation=man:systemd-homed.service(8) +After=home.mount systemd-homed.service +Before=systemd-user-sessions.service + +[Service] +ExecStop=homectl deactivate-all +RemainAfterExit=true +Type=oneshot + +[Install] +WantedBy=systemd-homed.service +Also=systemd-homed.service diff --git a/units/systemd-homed.service.in b/units/systemd-homed.service.in index a14bb5b409..4b6a91c984 100644 --- a/units/systemd-homed.service.in +++ b/units/systemd-homed.service.in @@ -39,4 +39,4 @@ SystemCallFilter=@system-service @mount [Install] WantedBy=multi-user.target Alias=dbus-org.freedesktop.home1.service -Also=systemd-userdbd.service +Also=systemd-homed-activate.service systemd-userdbd.service |