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@xxxxxxxxxx> > > --- > 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@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/libvir-list
Attachment:
signature.asc
Description: Digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list