[libvirt] [PATCH] netserver: close clients before stopping all drivers

Cédric Bosdonnat posted 1 patch 6 years, 11 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20171221083703.6025-1-cbosdonnat@suse.com
src/rpc/virnetserver.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
[libvirt] [PATCH] netserver: close clients before stopping all drivers
Posted by Cédric Bosdonnat 6 years, 11 months ago
So far clients were closed when disposing the daemon, after the state
driver cleanup. This was leading to libvirtd crashing at shutdown due
to missing driver.

Moving the client close in virNetServerClose() fixes the problem.
---
 src/rpc/virnetserver.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/rpc/virnetserver.c b/src/rpc/virnetserver.c
index 2b76daab5..43f889e2a 100644
--- a/src/rpc/virnetserver.c
+++ b/src/rpc/virnetserver.c
@@ -774,10 +774,8 @@ void virNetServerDispose(void *obj)
         virObjectUnref(srv->programs[i]);
     VIR_FREE(srv->programs);
 
-    for (i = 0; i < srv->nclients; i++) {
-        virNetServerClientClose(srv->clients[i]);
+    for (i = 0; i < srv->nclients; i++)
         virObjectUnref(srv->clients[i]);
-    }
     VIR_FREE(srv->clients);
 
     VIR_FREE(srv->mdnsGroupName);
@@ -796,6 +794,9 @@ void virNetServerClose(virNetServerPtr srv)
     for (i = 0; i < srv->nservices; i++)
         virNetServerServiceClose(srv->services[i]);
 
+    for (i = 0; i < srv->nclients; i++)
+        virNetServerClientClose(srv->clients[i]);
+
     virObjectUnlock(srv);
 }
 
-- 
2.15.1

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] netserver: close clients before stopping all drivers
Posted by Erik Skultety 6 years, 11 months ago
On Thu, Dec 21, 2017 at 09:37:03AM +0100, Cédric Bosdonnat wrote:
> So far clients were closed when disposing the daemon, after the state
> driver cleanup. This was leading to libvirtd crashing at shutdown due
> to missing driver.
>
> Moving the client close in virNetServerClose() fixes the problem.

There's no other correct way of addressing the issue you're facing, therefore
Reviewed-by: Erik Skultety <eskultet@redhat.com>

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list