[libvirt] [PATCH 2/3] Auto-add a root <filesystem> element to LXC containers on startup

Eric Blake eblake at redhat.com
Wed Apr 3 17:17:30 UTC 2013


On 04/03/2013 10:02 AM, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange" <berrange at redhat.com>
> 
> Currently the LXC container code has two codepaths, depending on
> whether there is a <filesystem> element with a target path of '/'.
> If we automatically add a <filesystem> device with src=/ and dst=/,
> for any container which has not specified a root filesystem, then
> we only need one codepath for setting up the filesystem.
> 
> Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
> ---
>  src/lxc/lxc_container.c | 113 +++---------------------------------------------
>  src/lxc/lxc_process.c   |  38 ++++++++++++++++
>  2 files changed, 44 insertions(+), 107 deletions(-)

Nice cleanup!

> +++ b/src/lxc/lxc_process.c
> @@ -981,6 +981,41 @@ virLXCProcessReadLogOutput(virDomainObjPtr vm,
>      return ret;
>  }
>  
> +
> +static int
> +virLXCProcessEnsureRootFS(virDomainObjPtr vm)
> +{
> +    virDomainFSDefPtr root = virDomainGetRootFilesystem(vm->def);
> +
> +    if (root)
> +        return 0;
> +
> +    if (VIR_ALLOC(root) < 0)
> +        goto no_memory;
> +
> +    root->type = VIR_DOMAIN_FS_TYPE_MOUNT;
> +
> +    if (!(root->src = strdup("/")) ||
> +        !(root->dst = strdup("/")))
> +        goto no_memory;

Might be a fun merge conflict, depending on whether this or VIR_STRDUP
gets merged first. :)

> +
> +    if (VIR_EXPAND_N(vm->def->fss,
> +                     vm->def->nfss, 1) < 0)
> +        goto no_memory;
> +
> +    memmove(vm->def->fss + 1,
> +            vm->def->fss,
> +            vm->def->nfss * sizeof(virDomainFSDefPtr));
> +    vm->def->fss[0] = root;

Instead of VIR_EXPAND_N/memmove, you should use VIR_INSERT_ELEMENT.

I like the concept of the patch, but I'm debating whether to ack this or
require a v2 just so we make sure the VIR_INSERT_ELEMENT usage is correct.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 621 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20130403/01e81605/attachment-0001.sig>


More information about the libvir-list mailing list