mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00:00
qemu: Generate shorter channel target paths
A <channel/> device is basically an UNIX socket into guest. Whatever is sent from the host, appears in the guest and vice versa. But because of that, the length of the path to the socket is important (underscored by fact that we derive the path from domain short name). But there are still cases where we might not fit into UNIX_PATH_MAX limit (usually 108 characters), because the path is derived also from other variables, e.g. XDG_CONFIG_HOME for session domains. There are two components though, that are needless: "/target/" and "domain-" prefix. Drop them. This is safe to do, because running domains have their path saved in status XML and even though paths are dropped on migration, they are not part of guest ABI and thus we are free to change them. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
parent
5d8e842a0f
commit
d3759d3674
@ -2136,7 +2136,6 @@ exit 0
|
||||
%ghost %dir %{_rundir}/libvirt/qemu/swtpm/
|
||||
%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/
|
||||
%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/channel/
|
||||
%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/channel/target/
|
||||
%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/checkpoint/
|
||||
%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/dump/
|
||||
%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/nvram/
|
||||
|
@ -151,7 +151,7 @@ virQEMUDriverConfig *virQEMUDriverConfigNew(bool privileged,
|
||||
cfg->snapshotDir = g_strdup_printf("%s/snapshot", cfg->libDir);
|
||||
cfg->checkpointDir = g_strdup_printf("%s/checkpoint", cfg->libDir);
|
||||
cfg->autoDumpPath = g_strdup_printf("%s/dump", cfg->libDir);
|
||||
cfg->channelTargetDir = g_strdup_printf("%s/channel/target", cfg->libDir);
|
||||
cfg->channelTargetDir = g_strdup_printf("%s/channel", cfg->libDir);
|
||||
cfg->nvramDir = g_strdup_printf("%s/nvram", cfg->libDir);
|
||||
cfg->memoryBackingDir = g_strdup_printf("%s/ram", cfg->libDir);
|
||||
} else if (privileged) {
|
||||
@ -173,7 +173,7 @@ virQEMUDriverConfig *virQEMUDriverConfigNew(bool privileged,
|
||||
cfg->snapshotDir = g_strdup_printf("%s/snapshot", cfg->libDir);
|
||||
cfg->checkpointDir = g_strdup_printf("%s/checkpoint", cfg->libDir);
|
||||
cfg->autoDumpPath = g_strdup_printf("%s/dump", cfg->libDir);
|
||||
cfg->channelTargetDir = g_strdup_printf("%s/channel/target", cfg->libDir);
|
||||
cfg->channelTargetDir = g_strdup_printf("%s/channel", cfg->libDir);
|
||||
cfg->nvramDir = g_strdup_printf("%s/nvram", cfg->libDir);
|
||||
cfg->memoryBackingDir = g_strdup_printf("%s/ram", cfg->libDir);
|
||||
cfg->swtpmStorageDir = g_strdup_printf("%s/lib/libvirt/swtpm",
|
||||
@ -201,7 +201,7 @@ virQEMUDriverConfig *virQEMUDriverConfigNew(bool privileged,
|
||||
cfg->checkpointDir = g_strdup_printf("%s/qemu/checkpoint",
|
||||
cfg->configBaseDir);
|
||||
cfg->autoDumpPath = g_strdup_printf("%s/qemu/dump", cfg->configBaseDir);
|
||||
cfg->channelTargetDir = g_strdup_printf("%s/qemu/channel/target",
|
||||
cfg->channelTargetDir = g_strdup_printf("%s/qemu/channel",
|
||||
cfg->configBaseDir);
|
||||
cfg->nvramDir = g_strdup_printf("%s/qemu/nvram", cfg->configBaseDir);
|
||||
cfg->memoryBackingDir = g_strdup_printf("%s/qemu/ram", cfg->configBaseDir);
|
||||
|
@ -1780,7 +1780,7 @@ qemuDomainSetPrivatePaths(virQEMUDriver *driver,
|
||||
priv->libDir = g_strdup_printf("%s/domain-%s", cfg->libDir, domname);
|
||||
|
||||
if (!priv->channelTargetDir)
|
||||
priv->channelTargetDir = g_strdup_printf("%s/domain-%s",
|
||||
priv->channelTargetDir = g_strdup_printf("%s/%s",
|
||||
cfg->channelTargetDir, domname);
|
||||
|
||||
return 0;
|
||||
@ -5405,13 +5405,16 @@ qemuDomainDefaultNetModel(const virDomainDef *def,
|
||||
* Clear auto generated unix socket paths:
|
||||
*
|
||||
* libvirt 1.2.18 and older:
|
||||
* {cfg->channelTargetDir}/{dom-name}.{target-name}
|
||||
* {cfg->channelTargetDir}/target/{dom-name}.{target-name}
|
||||
*
|
||||
* libvirt 1.2.19 - 1.3.2:
|
||||
* {cfg->channelTargetDir}/domain-{dom-name}/{target-name}
|
||||
* {cfg->channelTargetDir}/target/domain-{dom-name}/{target-name}
|
||||
*
|
||||
* libvirt 1.3.3 and newer:
|
||||
* {cfg->channelTargetDir}/domain-{dom-id}-{short-dom-name}/{target-name}
|
||||
* libvirt 1.3.3 - 9.7.0:
|
||||
* {cfg->channelTargetDir}/target/domain-{dom-id}-{short-dom-name}/{target-name}
|
||||
*
|
||||
* libvirt 9.7.0 and newer:
|
||||
* {cfg->channelTargetDir}/{dom-id}-{short-dom-name}/{target-name}
|
||||
*
|
||||
* The unix socket path was stored in config XML until libvirt 1.3.0.
|
||||
* If someone specifies the same path as we generate, they shouldn't do it.
|
||||
@ -5437,7 +5440,7 @@ qemuDomainChrDefDropDefaultPath(virDomainChrDef *chr,
|
||||
cfg = virQEMUDriverGetConfig(driver);
|
||||
|
||||
virBufferEscapeRegex(&buf, "^%s", cfg->channelTargetDir);
|
||||
virBufferAddLit(&buf, "/([^/]+\\.)|(domain-[^/]+/)");
|
||||
virBufferAddLit(&buf, "/(target/)?([^/]+\\.)|(domain-[^/]+/)|([0-9]+-[^/]+/)");
|
||||
virBufferEscapeRegex(&buf, "%s$", chr->target.name);
|
||||
|
||||
regexp = virBufferContentAndReset(&buf);
|
||||
|
@ -1,5 +1,5 @@
|
||||
<channel type='unix'>
|
||||
<source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-7-hotplug/org.qemu.guest_agent.0'/>
|
||||
<source mode='bind' path='/var/lib/libvirt/qemu/channel/7-hotplug/org.qemu.guest_agent.0'/>
|
||||
<target type='virtio' name='org.qemu.guest_agent.0'/>
|
||||
<address type='virtio-serial' controller='0' bus='0' port='1'/>
|
||||
</channel>
|
||||
|
@ -39,7 +39,7 @@
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
|
||||
</controller>
|
||||
<channel type='unix'>
|
||||
<source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-7-hotplug/org.qemu.guest_agent.0'/>
|
||||
<source mode='bind' path='/var/lib/libvirt/qemu/channel/7-hotplug/org.qemu.guest_agent.0'/>
|
||||
<target type='virtio' name='org.qemu.guest_agent.0'/>
|
||||
<alias name='channel0'/>
|
||||
<address type='virtio-serial' controller='0' bus='0' port='1'/>
|
||||
|
@ -39,7 +39,7 @@
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
|
||||
</controller>
|
||||
<channel type='unix'>
|
||||
<source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-7-hotplug/org.qemu.guest_agent.0'/>
|
||||
<source mode='bind' path='/var/lib/libvirt/qemu/channel/domain-7-hotplug/org.qemu.guest_agent.0'/>
|
||||
<target type='virtio' name='org.qemu.guest_agent.0'/>
|
||||
<alias name='channel0'/>
|
||||
<address type='virtio-serial' controller='0' bus='0' port='1'/>
|
||||
|
@ -39,7 +39,7 @@
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
|
||||
</controller>
|
||||
<channel type='unix'>
|
||||
<source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-7-hotplug/org.qemu.guest_agent.0'/>
|
||||
<source mode='bind' path='/var/lib/libvirt/qemu/channel/7-hotplug/org.qemu.guest_agent.0'/>
|
||||
<target type='virtio' name='org.qemu.guest_agent.0'/>
|
||||
<alias name='channel0'/>
|
||||
<address type='virtio-serial' controller='0' bus='0' port='1'/>
|
||||
|
@ -42,7 +42,7 @@
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
|
||||
</controller>
|
||||
<channel type='unix'>
|
||||
<source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-7-hotplug/org.qemu.guest_agent.0'/>
|
||||
<source mode='bind' path='/var/lib/libvirt/qemu/channel/7-hotplug/org.qemu.guest_agent.0'/>
|
||||
<target type='virtio' name='org.qemu.guest_agent.0'/>
|
||||
<alias name='channel0'/>
|
||||
<address type='virtio-serial' controller='0' bus='0' port='1'/>
|
||||
|
@ -24,6 +24,10 @@
|
||||
<source mode='bind' path='/var/lib/libvirt/qemu/channel/target/QEMUGuest1/org.qemu.guest_agent.3'/>
|
||||
<target type='virtio' name='org.qemu.guest_agent.3'/>
|
||||
</channel>
|
||||
<channel type='unix'>
|
||||
<source mode='bind' path='/var/lib/libvirt/qemu/channel/1-QEMUGuest1/org.qemu.guest_agent.4'/>
|
||||
<target type='virtio' name='org.qemu.guest_agent.4'/>
|
||||
</channel>
|
||||
<memballoon model='none'/>
|
||||
</devices>
|
||||
</domain>
|
||||
|
@ -41,6 +41,11 @@
|
||||
<target type='virtio' name='org.qemu.guest_agent.3'/>
|
||||
<address type='virtio-serial' controller='0' bus='0' port='4'/>
|
||||
</channel>
|
||||
<channel type='unix'>
|
||||
<source mode='bind' path='/var/lib/libvirt/qemu/channel/1-QEMUGuest1/org.qemu.guest_agent.4'/>
|
||||
<target type='virtio' name='org.qemu.guest_agent.4'/>
|
||||
<address type='virtio-serial' controller='0' bus='0' port='5'/>
|
||||
</channel>
|
||||
<input type='mouse' bus='ps2'/>
|
||||
<input type='keyboard' bus='ps2'/>
|
||||
<audio id='1' type='none'/>
|
||||
|
@ -38,6 +38,10 @@
|
||||
<target type='virtio' name='org.qemu.guest_agent.3'/>
|
||||
<address type='virtio-serial' controller='0' bus='0' port='4'/>
|
||||
</channel>
|
||||
<channel type='unix'>
|
||||
<target type='virtio' name='org.qemu.guest_agent.4'/>
|
||||
<address type='virtio-serial' controller='0' bus='0' port='5'/>
|
||||
</channel>
|
||||
<input type='mouse' bus='ps2'/>
|
||||
<input type='keyboard' bus='ps2'/>
|
||||
<audio id='1' type='none'/>
|
||||
|
@ -460,7 +460,7 @@ int qemuTestDriverInit(virQEMUDriver *driver)
|
||||
VIR_FREE(cfg->libDir);
|
||||
cfg->libDir = g_strdup("/var/lib/libvirt/qemu");
|
||||
VIR_FREE(cfg->channelTargetDir);
|
||||
cfg->channelTargetDir = g_strdup("/var/lib/libvirt/qemu/channel/target");
|
||||
cfg->channelTargetDir = g_strdup("/var/lib/libvirt/qemu/channel");
|
||||
VIR_FREE(cfg->memoryBackingDir);
|
||||
cfg->memoryBackingDir = g_strdup("/var/lib/libvirt/qemu/ram");
|
||||
VIR_FREE(cfg->nvramDir);
|
||||
|
Loading…
Reference in New Issue
Block a user