From cb5c457fba6a8618d4f149b3b1ac23fb9b16188b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Mon, 11 Jan 2016 19:40:32 +0100 Subject: [PATCH] Do not try to signal NetworkManager before suspend if it isn't running Sending dbus calls to a service which isn't running _and is blocked to not be started_ would result in timeout, which would delay the whole system suspend. Fixes QubesOS/qubes-issues#1419 --- qubes-rpc/prepare-suspend | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/qubes-rpc/prepare-suspend b/qubes-rpc/prepare-suspend index 8957e58..e3e1f8f 100755 --- a/qubes-rpc/prepare-suspend +++ b/qubes-rpc/prepare-suspend @@ -12,11 +12,13 @@ if [ -r /rw/config/suspend-module-blacklist ]; then fi if [ x"$action" = x"suspend" ]; then - dbus-send --system --print-reply \ - --dest=org.freedesktop.NetworkManager \ - /org/freedesktop/NetworkManager \ - org.freedesktop.NetworkManager.Sleep boolean:true || \ - service NetworkManager stop + if [ -f /var/run/qubes-service/network-manager ]; then + dbus-send --system --print-reply \ + --dest=org.freedesktop.NetworkManager \ + /org/freedesktop/NetworkManager \ + org.freedesktop.NetworkManager.Sleep boolean:true || \ + service NetworkManager stop + fi # Force interfaces down, just in case when NM didn't done it for if in `ls /sys/class/net|grep -v "lo\|vif"`; do if [ "`cat /sys/class/net/$if/device/devtype 2>/dev/null`" = "vif" ]; then @@ -36,9 +38,11 @@ else for mod in `cat /var/run/qubes/suspend-modules-loaded`; do modprobe $mod done - dbus-send --system --print-reply \ - --dest=org.freedesktop.NetworkManager \ - /org/freedesktop/NetworkManager \ - org.freedesktop.NetworkManager.Sleep boolean:false || \ - { [ -x /bin/systemctl ] && systemctl start NetworkManager.service; } || service qubes-core-netvm start + if [ -f /var/run/qubes-service/network-manager ]; then + dbus-send --system --print-reply \ + --dest=org.freedesktop.NetworkManager \ + /org/freedesktop/NetworkManager \ + org.freedesktop.NetworkManager.Sleep boolean:false || \ + { [ -x /bin/systemctl ] && systemctl start NetworkManager.service; } || service qubes-core-netvm start + fi fi