[libvirt] [PATCH v2] Generate unique socket file

Pavel Hrdina phrdina at redhat.com
Tue Jul 25 21:04:31 UTC 2017


On Tue, Jul 25, 2017 at 09:33:50AM -0500, Scott Garfinkle wrote:
> It's possible to have more than one unnamed virtio-serial unix channel.
> We need to generate a unique name for each channel. Currently, we use
> ".../unknown.sock" for all of them. Better practice would be to specify
> an explicit target path name; however, in the absence of that, we need
> uniqueness in the names we generate internally.
> 
> Before the changes we'd get /var/lib/libvirt/qemu/channel/target/unknown.sock
> for each instance of
>     <channel type='unix'>
>         <source mode='bind'/>
>         <target type='virtio'/>
>     </channel>
> 
> Now, we get vioser-00-00-01.sock, vioser-00-00-02.sock, etc.
> 
> Changes from v1: new socket name
> 
> Signed-off-by: Scott Garfinkle <seg at us.ibm.com>
> 
> ---
>  src/qemu/qemu_domain.c                             | 24 +++++++++++++++-------
>  .../qemuxml2argv-channel-virtio-unix.args          |  2 +-
>  2 files changed, 18 insertions(+), 8 deletions(-)
> 
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index 78e75f1..7a9958d 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -7178,18 +7178,28 @@ int
>  qemuDomainPrepareChannel(virDomainChrDefPtr channel,
>                           const char *domainChannelTargetDir)
>  {
> -    if (channel->targetType == VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO &&
> -        channel->source->type == VIR_DOMAIN_CHR_TYPE_UNIX &&
> -        !channel->source->data.nix.path) {
> +    if (channel->targetType != VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO ||
> +        channel->source->type != VIR_DOMAIN_CHR_TYPE_UNIX ||
> +        channel->source->data.nix.path)
> +            return 0;
> +
> +    if (channel->target.name) {
>          if (virAsprintf(&channel->source->data.nix.path,
>                          "%s/%s", domainChannelTargetDir,
> -                        channel->target.name ? channel->target.name
> -                        : "unknown.sock") < 0)
> +                        channel->target.name) < 0)
> +            return -1;
> +    } else {    // Generate a unique name

We don't allow this type of comment, since this patch is already pushed,
I'll fix it.

Pavel

> +        if (virAsprintf(&channel->source->data.nix.path,
> +                        "%s/vioser-%02d-%02d-%02d.sock",
> +                        domainChannelTargetDir,
> +                        channel->info.addr.vioserial.controller,
> +                        channel->info.addr.vioserial.bus,
> +                        channel->info.addr.vioserial.port) < 0)
>              return -1;
> -
> -        channel->source->data.nix.listen = true;
>      }
>  
> +    channel->source->data.nix.listen = true;
> +
>      return 0;
>  }
>  
> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-channel-virtio-unix.args b/tests/qemuxml2argvdata/qemuxml2argv-channel-virtio-unix.args
> index 2b72965..8e0452a 100644
> --- a/tests/qemuxml2argvdata/qemuxml2argv-channel-virtio-unix.args
> +++ b/tests/qemuxml2argvdata/qemuxml2argv-channel-virtio-unix.args
> @@ -29,7 +29,7 @@ path=/tmp/channel/domain--1-QEMUGuest1/org.qemu.guest_agent.0,server,nowait \
>  -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,\
>  id=channel0,name=org.qemu.guest_agent.0 \
>  -chardev socket,id=charchannel1,\
> -path=/tmp/channel/domain--1-QEMUGuest1/unknown.sock,server,nowait \
> +path=/tmp/channel/domain--1-QEMUGuest1/vioser-00-00-02.sock,server,nowait \
>  -device virtserialport,bus=virtio-serial0.0,nr=2,chardev=charchannel1,\
>  id=channel1 \
>  -chardev socket,id=charchannel2,path=/tmp/channel/domain--1-QEMUGuest1/ble,\
> -- 
> 1.8.3.1
> 
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170725/3a169ea7/attachment-0001.sig>


More information about the libvir-list mailing list