[libvirt] [PATCH] qemu: set bind mode for chardev while parsing XML
Michal Privoznik
mprivozn at redhat.com
Wed Aug 30 15:51:06 UTC 2017
On 08/30/2017 04:49 PM, Pavel Hrdina wrote:
> Currently while parsing domain XML we clear the UNIX path if it matches
> one of the auto-generated paths by libvirt. After that when the guest
> is started new path is generated but the mode is also changed to "bind".
>
> In the real-world use-case the mode should not change, it only happens
> if a user provides a mode='connect' and path that matches one of the
> auto-generated path or not provides a path at all.
>
> Before *reconnect* feature was introduced there was no issue, but with
> the new feature we need to make sure that it's used only with "connect"
> mode, therefore we need to move the mode change into parsing in order
> to have a proper error reported by validation code.
>
> Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
> ---
> src/conf/domain_conf.c | 8 ++++++++
> src/qemu/qemu_domain.c | 6 +++---
> ...muxml2argv-chardev-reconnect-generated-path.xml | 23 ++++++++++++++++++++++
> tests/qemuxml2argvtest.c | 3 +++
> 4 files changed, 37 insertions(+), 3 deletions(-)
> create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-chardev-reconnect-generated-path.xml
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index f7574d77b6..9fdd0f90fc 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -4421,6 +4421,14 @@ virDomainDeviceDefPostParseCommon(virDomainDeviceDefPtr dev,
>
> chr->target.port = maxport + 1;
> }
> +
> + /* For UNIX chardev if no path is provided we generate one.
> + * This also implies that the mode is 'bind'. */
> + if (chr->source &&
> + chr->source->type == VIR_DOMAIN_CHR_TYPE_UNIX &&
> + !chr->source->data.nix.path) {
> + chr->source->data.nix.listen = true;
> + }
> }
This hunk should go somewhere under src/qemu/ because leaving it here
enables this for all the drivers. qemuDomainDeviceDefPostParse() looks
like a good candidate.
Michal
More information about the libvir-list
mailing list