On 1/18/22 15:38, Peter Krempa wrote: > The existence of the unix socket path is used by the remote driver to > determine whether modular daemons are in use, so if the socket file > stays behind and the user decided to switch from modular to monolithic > daemon which was socket activated, the remote driver will insist on > picking '/var/run/libvirt/virtqemud-sock', even when it's no longer in > use: > > # systemctl start libvirtd.service > # virsh list > Id Name State > -------------------- > > # systemctl stop libvirtd.service > Warning: Stopping libvirtd.service, but it can still be activated by: > libvirtd.socket > libvirtd-ro.socket > libvirtd-admin.socket > # systemctl start virtqemud.socket > # virsh list > Id Name State > -------------------- > > # systemctl stop virtqemud.socket > # systemctl start libvirtd.service > # virsh list > error: failed to connect to the hypervisor > error: Failed to connect socket to '/var/run/libvirt/virtqemud-sock': Connection refused > > # virsh -c 'qemu:///system?socket=/var/run/libvirt/libvirt-sock' list > Id Name State > -------------------- > > Fix this by instructing systemd to delete the socket file when > deactivating the unit file for the socket. > > Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx> > --- > src/remote/libvirtd.socket.in | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/src/remote/libvirtd.socket.in b/src/remote/libvirtd.socket.in > index 85b4aa800a..0f349656f5 100644 > --- a/src/remote/libvirtd.socket.in > +++ b/src/remote/libvirtd.socket.in > @@ -9,6 +9,7 @@ Before=@service@.service > ListenStream=@runstatedir@/libvirt/@sockprefix@-sock > Service=@service@.service > SocketMode=@mode@ > +RemoveOnStop=yes I beg your pardon? Systemd leaves a stale socket behind? Isn't this something that systemd needs to fix? Michal