From: Radoslaw Smigielski <[email protected]>
LXC domains did not assign device aliases to filesystem devices
during domain startup. Only console devices received aliases.
This change assigns aliases in the format 'fs0', 'fs1', etc. to all
filesystem devices during domain startup, following the same pattern
used for console devices.
Before this patch, virsh dumpxml showed filesystem devices without aliases:
<filesystem type='mount' accessmode='passthrough'>
<source dir='/var/lib/libvirt/lxc/demo-root'/>
<target dir='/'/>
</filesystem>
<filesystem type='file' accessmode='passthrough'>
<driver type='loop' format='raw'/>
<source file='/var/tmp/short6.raw'/>
<target dir='/short6'/>
</filesystem>
<console type='pty' tty='/dev/pts/8'>
<source path='/dev/pts/8'/>
<target type='lxc' port='0'/>
<alias name='console0'/> <!-- Only console has alias -->
</console>
After this patch, filesystem devices have auto-generated aliases:
<filesystem type='mount' accessmode='passthrough'>
<source dir='/var/lib/libvirt/lxc/demo-root'/>
<target dir='/'/>
<alias name='fs0'/> <!-- Now assigned -->
</filesystem>
<filesystem type='file' accessmode='passthrough'>
<driver type='loop' format='raw'/>
<source file='/var/tmp/short6.raw'/>
<target dir='/short6'/>
<alias name='fs1'/> <!-- Now assigned -->
</filesystem>
<console type='pty' tty='/dev/pts/8'>
<source path='/dev/pts/8'/>
<target type='lxc' port='0'/>
<alias name='console0'/>
</console>
This is a prerequisite for fixing bug #63 (loop device path length
limitation), where filesystem device aliases will be used to compose
synthetic lo_file_name references in the format "libvirt-$UUID-$DEVALIAS".
Related: https://gitlab.com/libvirt/libvirt/-/work_items/63
Signed-off-by: Radoslaw Smigielski <[email protected]>
---
src/lxc/lxc_process.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c
index 2c0bcb9dd3aa..aae9fcc9dfd1 100644
--- a/src/lxc/lxc_process.c
+++ b/src/lxc/lxc_process.c
@@ -1350,6 +1350,12 @@ int virLXCProcessStart(virLXCDriver * driver,
vm->def->consoles[i]->info.alias = g_strdup_printf("console%zu", i);
}
+ VIR_DEBUG("Setting up filesystem aliases");
+ for (i = 0; i < vm->def->nfss; i++) {
+ g_free(vm->def->fss[i]->info.alias);
+ vm->def->fss[i]->info.alias = g_strdup_printf("fs%zu", i);
+ }
+
VIR_DEBUG("Setting up Interfaces");
if (virLXCProcessSetupInterfaces(driver, vm->def, &veths) < 0)
goto cleanup;
--
2.54.0