[libvirt] lxcContainerResolveSymlinks failing on cascading FS

Michal Privoznik mprivozn at redhat.com
Mon Nov 24 08:43:03 UTC 2014


On 21.11.2014 11:24, Cedric Bosdonnat wrote:
> Hi all,
>
> As an example, the following command
>
>      virt-sandbox-service create --network dhcp,source=default --unitfile sshd.service mysshd -i 512
>
> generates a container definition containing these filesystems (in the
> same order):
>
>      <filesystem type='file' accessmode='passthrough'>
>        <source file='/var/lib/libvirt/images/mysshd.raw'/>
>        <target dir='/var/lib/libvirt/filesystems/mysshd'/>
>      </filesystem>
>      <filesystem type='bind' accessmode='passthrough'>
>        <source dir='/var/lib/libvirt/filesystems/mysshd/var'/>
>        <target dir='/var'/>
>      </filesystem>
>
> Since /var/lib/libvirt/filesystems/mysshd contains nothing, the second
> FS needs the first one to be mounted for the source directory to exist.
>
> The problem comes with lxcContainerResolveSymlinks() being run before
> any file system is actually mounted. So the container can't be started
> and we get the following error:
>
>      Failed to access '/var/lib/libvirt/filesystems/mysshd/var': No such file or directory
>
> This would work if the symlinks were resolved right before mounting the
> FS instead of before mounting any of them. Any strong opinion against
> it?
>

Correct, it's a libvirt bug. Even with real bare metal, where fstab is 
evaluated sequentially per line the symlink resolving is done the way 
you're suggesting. Wanna contribute a patch?

Michal




More information about the libvir-list mailing list