[libvirt] [RFC v2 4/4] lxc: Remove unused lxcContainerPrepareRoot

Radostin Stoyanov rstoyanov1 at gmail.com
Sun Jun 10 11:14:26 UTC 2018


lxcContainerPrepareRoot was introduced with commit 8dbe858

    Ensure root filesystem is mounted if a file/block mount.

    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.

However, this method is no-longer needed because in the cases when the
container root file system is of type 'file' or 'block', it will be mounted by
virLXCControllerSetupNBDDeviceFS. Therefore the function
lxcContainerPrepareRoot will always be called with:

    root->type = VIR_DOMAIN_FS_TYPE_MOUNT

Which makes the following condition tautology:

    if (root->type == VIR_DOMAIN_FS_TYPE_MOUNT)
        return 0;

Signed-off-by: Radostin Stoyanov <rstoyanov1 at gmail.com>
---
 src/lxc/lxc_container.c | 53 -----------------------------------------
 1 file changed, 53 deletions(-)

diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
index 3f6be9f44d..3360c608ff 100644
--- a/src/lxc/lxc_container.c
+++ b/src/lxc/lxc_container.c
@@ -658,55 +658,6 @@ static int lxcContainerResolveSymlinks(virDomainFSDefPtr fs, bool gentle)
     return 0;
 }
 
-static int lxcContainerPrepareRoot(virDomainDefPtr def,
-                                   virDomainFSDefPtr root,
-                                   const char *sec_mount_options)
-{
-    char *dst;
-    char *tmp;
-
-    VIR_DEBUG("Prepare root %d", root->type);
-
-    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 (lxcContainerResolveSymlinks(root, false) < 0)
-        return -1;
-
-    if (virAsprintf(&dst, "%s/%s.root",
-                    LXC_STATE_DIR, def->name) < 0)
-        return -1;
-
-    tmp = root->dst;
-    root->dst = dst;
-
-    if (lxcContainerMountFSBlock(root, "", sec_mount_options) < 0) {
-        root->dst = tmp;
-        VIR_FREE(dst);
-        return -1;
-    }
-
-    root->dst = tmp;
-    root->type = VIR_DOMAIN_FS_TYPE_MOUNT;
-    VIR_FREE(root->src->path);
-    root->src->path = dst;
-
-    return 0;
-}
-
 static int lxcContainerPivotRoot(virDomainFSDefPtr root)
 {
     int ret;
@@ -1755,10 +1706,6 @@ static int lxcContainerSetupPivotRoot(virDomainDefPtr vmDef,
     if (virFileResolveAllLinks(LXC_STATE_DIR, &stateDir) < 0)
         goto cleanup;
 
-    /* Ensure the root filesystem is mounted */
-    if (lxcContainerPrepareRoot(vmDef, root, sec_mount_options) < 0)
-        goto cleanup;
-
     /* Gives us a private root, leaving all parent OS mounts on /.oldroot */
     if (lxcContainerPivotRoot(root) < 0)
         goto cleanup;
-- 
2.17.1




More information about the libvir-list mailing list