On Wed, Jan 06, 2016 at 05:50:57PM +0100, Martin Kletzander wrote:
If user defines a virtio channel with UNIX socket backend and
doesn't
care about the path for the socket (e.g. qemu-agent channel), we still
generate it into the persistent XML. Moreover when then user renames
the domain, due to its persistent socket path saved into the per-domain
directory, it will not start. So let's forget about old generated paths
and also stop putting them into the persistent definition.
https://bugzilla.redhat.com/show_bug.cgi?id=1278068
Signed-off-by: Martin Kletzander <mkletzan(a)redhat.com>
---
src/qemu/qemu_command.c | 12 ++++++++++++
src/qemu/qemu_domain.c | 21 +++++++++++----------
.../qemuxml2argv-channel-virtio-unix.args | 5 ++++-
.../qemuxml2argv-channel-virtio-unix.xml | 4 ++++
4 files changed, 31 insertions(+), 11 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 66ca11152ad8..c5127cfa04f9 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -10510,6 +10510,18 @@ qemuBuildCommandLine(virConnectPtr conn,
goto error;
}
+ if (channel->source.type == VIR_DOMAIN_CHR_TYPE_UNIX &&
+ !channel->source.data.nix.path) {
+ if (virAsprintf(&channel->source.data.nix.path,
+ "%s/domain-%s/%s",
+ cfg->channelTargetDir, def->name,
+ channel->target.name ? channel->target.name
+ : "unknown.sock") < 0)
+ goto error;
+
+ channel->source.data.nix.listen = true;
+ }
+
I don't like this. The qemuBuildCommandLine function should only create a
command line, not modify the domain definition. I know, there are other places,
that do the same, but let's try to avoid it.
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_SPICEVMC)
&&
channel->source.type == VIR_DOMAIN_CHR_TYPE_SPICEVMC) {
/* spicevmc was originally introduced via a -device
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
[...]
Otherwise it looks good.
Pavel