From: Florian Klink Date: Thu, 27 Mar 2014 15:50:17 +0000 (+0100) Subject: check whether rootfs is shared before running pre-mount hooks X-Git-Tag: lxc-1.1.0.alpha1~187 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cd698bdd407e6c548d6fdee3c18fe36bd328cbb5;p=thirdparty%2Flxc.git check whether rootfs is shared before running pre-mount hooks this expands c597baa8f9 and 2c6f3fc932. Also move the block using detect_ramfs_rootfs() from setup_rootfs() to lxc_setup() Signed-off-by: Florian Klink Acked-by: Serge E. Hallyn --- diff --git a/src/lxc/conf.c b/src/lxc/conf.c index a9d64baf4..e34e034aa 100644 --- a/src/lxc/conf.c +++ b/src/lxc/conf.c @@ -1506,18 +1506,6 @@ static int setup_rootfs(struct lxc_conf *conf) return -1; } - if (detect_ramfs_rootfs()) { - if (chroot_into_slave(conf)) { - ERROR("Failed to chroot into slave /"); - return -1; - } - } else if (detect_shared_rootfs()) { - if (mount("", "/", NULL, MS_SLAVE|MS_REC, 0)) { - SYSERROR("Failed to make / rslave"); - return -1; - } - } - // First try mounting rootfs using a bdev struct bdev *bdev = bdev_init(rootfs->path, rootfs->mount, rootfs->options); if (bdev && bdev->ops->mount(bdev) == 0) { @@ -3712,6 +3700,19 @@ int lxc_setup(struct lxc_handler *handler) const char *lxcpath = handler->lxcpath; void *data = handler->data; + if (detect_shared_rootfs()) { + if (mount(NULL, "/", NULL, MS_SLAVE|MS_REC, NULL)) { + SYSERROR("Failed to make / rslave"); + ERROR("Continuing..."); + } + } + if (detect_ramfs_rootfs()) { + if (chroot_into_slave(lxc_conf)) { + ERROR("Failed to chroot into slave /"); + return -1; + } + } + if (lxc_conf->inherit_ns_fd[LXC_NS_UTS] == -1) { if (setup_utsname(lxc_conf->utsname)) { ERROR("failed to setup the utsname for '%s'", name);