]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
rpc: don't unconditionally quit after preserving state
authorDaniel P. Berrangé <berrange@redhat.com>
Tue, 7 Jan 2025 10:27:21 +0000 (10:27 +0000)
committerDaniel P. Berrangé <berrange@redhat.com>
Thu, 20 Mar 2025 14:55:17 +0000 (14:55 +0000)
The call to preserve state (ie running VMs) is triggered in response to
the desktop session dbus terminating (session daemon), or logind sending
a "PrepareForShutdown" signal. In the case of the latter, daemons
should only save their state, not actually exit yet. Other things on the
system may still expect the daemon to be running at this stage.

Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
src/remote/remote_daemon.c
src/rpc/virnetdaemon.c

index 16dc1d86f7c44f29a15ce04b89ce7efb284862f0..1424d4cf5e188a3de32b187cb41306885f1abbb3 100644 (file)
@@ -526,8 +526,10 @@ handleSessionMessageFunc(GDBusConnection *connection G_GNUC_UNUSED,
 
     if (virGDBusMessageIsSignal(message,
                                 "org.freedesktop.DBus.Local",
-                                "Disconnected"))
+                                "Disconnected")) {
         virNetDaemonStop(dmn);
+        virNetDaemonQuit(dmn);
+    }
 
     return message;
 }
index 43a75b330f149dd935d18125bb6ff63d3c803834..469a1d3ae21971b6e864adfbd5741373adeb5ba5 100644 (file)
@@ -840,7 +840,6 @@ virNetDaemonStopWorker(void *opaque)
 
     VIR_DEBUG("Completed stop dmn=%p", dmn);
 
-    virNetDaemonQuit(dmn);
     virObjectUnref(dmn);
 }