]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
check whether rootfs is shared before running pre-mount hooks
authorFlorian Klink <flokli@flokli.de>
Thu, 27 Mar 2014 15:50:17 +0000 (16:50 +0100)
committerStéphane Graber <stgraber@ubuntu.com>
Thu, 27 Mar 2014 18:19:31 +0000 (14:19 -0400)
this expands c597baa8f9 and 2c6f3fc932.

Also move the block using detect_ramfs_rootfs() from setup_rootfs() to
lxc_setup()

Signed-off-by: Florian Klink <flokli@flokli.de>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
src/lxc/conf.c

index a9d64baf46fcdb391b6270aa17f14065252ec877..e34e034aade1165b66db09f965c58c860f059063 100644 (file)
@@ -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);