mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
Generate unique socket file
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.
Signed-off-by: Scott Garfinkle <seg@us.ibm.com>
This commit is contained in:
committed by
Martin Kletzander
parent
eaf2c9f891
commit
a7bc2c8cfd
@@ -7254,18 +7254,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
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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,\
|
||||
|
||||
Reference in New Issue
Block a user