From: Laine Stump <laine@redhat.com> When using a vhost-user connection between passt and QEMU, passt will autocreate a socket called ${socketname}.repair, but doesn't delete this socket when it exits, so to be a good citizen, libvirtshould delete it when we are tearing down the passt device plumbing. Resolves: https://issues.redhat.com/browse/RHEL-80285 Signed-off-by: Laine Stump <laine@redhat.com> --- src/qemu/qemu_passt.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_passt.c b/src/qemu/qemu_passt.c index 520eb1244a..56d048d585 100644 --- a/src/qemu/qemu_passt.c +++ b/src/qemu/qemu_passt.c @@ -121,7 +121,7 @@ qemuPasstAddNetProps(virDomainObj *vm, static void -qemuPasstKill(const char *pidfile, const char *passtSocketName) +qemuPasstKill(const virDomainNetDef *net, const char *pidfile, const char *passtSocketName) { virErrorPtr orig_err; pid_t pid = 0; @@ -135,6 +135,14 @@ qemuPasstKill(const char *pidfile, const char *passtSocketName) unlink(passtSocketName); + /* repair socket is (always) created by passt only for vhostuser mode */ + if (virDomainNetGetActualType(net) == VIR_DOMAIN_NET_TYPE_VHOSTUSER) { + g_autofree char *passtRepairSocketName + = g_strdup_printf("%s.repair", passtSocketName); + + unlink(passtRepairSocketName); + } + virErrorRestore(&orig_err); } @@ -146,7 +154,7 @@ qemuPasstStop(virDomainObj *vm, g_autofree char *pidfile = qemuPasstCreatePidFilename(vm, net); g_autofree char *passtSocketName = qemuPasstCreateSocketPath(vm, net); - qemuPasstKill(pidfile, passtSocketName); + qemuPasstKill(net, pidfile, passtSocketName); } @@ -351,6 +359,6 @@ qemuPasstStart(virDomainObj *vm, return 0; error: - qemuPasstKill(pidfile, passtSocketName); + qemuPasstKill(net, pidfile, passtSocketName); return -1; } -- 2.52.0