diff --git a/default/systemd/system-sleep/unmount-fuse b/default/systemd/system-sleep/unmount-fuse index c15fddf0..64444c1d 100755 --- a/default/systemd/system-sleep/unmount-fuse +++ b/default/systemd/system-sleep/unmount-fuse @@ -14,13 +14,18 @@ if [[ $1 == "pre" ]]; then fi if [[ $1 == "post" ]]; then - for uid_dir in /run/user/*; do - uid=$(basename "$uid_dir") - if [[ -S $uid_dir/bus ]]; then - sudo -u "#$uid" \ - DBUS_SESSION_BUS_ADDRESS="unix:path=$uid_dir/bus" \ - XDG_RUNTIME_DIR="$uid_dir" \ - systemctl --user restart gvfs-daemon.service 2>/dev/null || true - fi - done + # Run in background — user.slice is still frozen at this point, so a + # synchronous restart would block the thaw for up to 90 seconds. + ( + sleep 5 + for uid_dir in /run/user/*; do + uid=$(basename "$uid_dir") + if [[ -S $uid_dir/bus ]]; then + sudo -u "#$uid" \ + DBUS_SESSION_BUS_ADDRESS="unix:path=$uid_dir/bus" \ + XDG_RUNTIME_DIR="$uid_dir" \ + systemctl --user restart gvfs-daemon.service 2>/dev/null || true + fi + done + ) & fi