On 22.03.2013 15:24, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange" <[email protected]>
>
> For a root filesystem with type=file or type=block, the LXC
> container was forgetting to actually mount it, before doing
> the pivot root step.
>
> Signed-off-by: Daniel P. Berrange <[email protected]>
> ---
> src/lxc/lxc_container.c | 52
> +++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 52 insertions(+)
>
> diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
> index be9bc6c..002dba1 100644
> --- a/src/lxc/lxc_container.c
> +++ b/src/lxc/lxc_container.c
> @@ -105,6 +105,9 @@ struct __lxc_child_argv {
> int handshakefd;
> };
>
> +static int lxcContainerMountFSBlock(virDomainFSDefPtr fs,
> + const char *srcprefix);
> +
1: ^^^
>
> /*
> * reboot(LINUX_REBOOT_CMD_CAD_ON) will return -EINVAL
> @@ -406,6 +409,51 @@ static int lxcContainerChildMountSort(const void *a,
> const void *b)
> # define MS_SLAVE (1<<19)
> #endif
>
> +static int lxcContainerPrepareRoot(virDomainDefPtr def,
> + virDomainFSDefPtr root)
> +{
> + char *dst;
> + char *tmp;
> +
> + if (root->type == VIR_DOMAIN_FS_TYPE_MOUNT)
> + return 0;
> +
> + if (root->type == VIR_DOMAIN_FS_TYPE_FILE) {
> + virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> + _("Unexpected root filesystem without loop device"));
> + return -1;
> + }
> +
> + if (root->type != VIR_DOMAIN_FS_TYPE_BLOCK) {
> + virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> + _("Unsupported root filesystem type %s"),
> + virDomainFSTypeToString(root->type));
> + return -1;
> + }
> +
> + if (virAsprintf(&dst, "%s/%s.root",
> + LXC_STATE_DIR, def->name) < 0) {
> + virReportOOMError();
> + return -1;
> + }
> +
> + tmp = root->dst;
> + root->dst = dst;
> +
> + if (lxcContainerMountFSBlock(root, "") < 0) {
> + root->dst = tmp;
> + VIR_FREE(dst);
> + return -1;
> + }
> +
> + root->dst = tmp;
> + root->type = VIR_DOMAIN_FS_TYPE_MOUNT;
> + VIR_FREE(root->src);
> + root->src = dst;
> +
> + return 0;
> +}
> +
Any chance you can move this after the lxcContainerMountFSBlock() and
hence avoid [1]? Not a show stopper though. ACK.
Michal
--
libvir-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libvir-list