From 4fdf3d3899e40d74073622f11a8ba2771d16c002 Mon Sep 17 00:00:00 2001 Message-Id: <4fdf3d3899e40d74073622f11a8ba2771d16c002.1377873638.git.jdenemar@redhat.com> From: "Daniel P. Berrange" Date: Tue, 13 Aug 2013 14:06:57 +0100 Subject: [PATCH] Honour root prefix in lxcContainerMountFSBlockAuto For https://bugzilla.redhat.com/show_bug.cgi?id=924815 The lxcContainerMountFSBlockAuto method can be used to mount the initial root filesystem, so it cannot assume a prefix of /.oldroot. Signed-off-by: Daniel P. Berrange (cherry picked from commit 2d07f84302eac7656ad6ac227c1e6655b8af1425) --- src/lxc/lxc_container.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c index a943b22..0ab4026 100644 --- a/src/lxc/lxc_container.c +++ b/src/lxc/lxc_container.c @@ -1144,7 +1144,8 @@ lxcContainerMountDetectFilesystem(const char *src ATTRIBUTE_UNUSED, */ static int lxcContainerMountFSBlockAuto(virDomainFSDefPtr fs, int fsflags, - const char *src) + const char *src, + const char *srcprefix) { FILE *fp = NULL; int ret = -1; @@ -1154,11 +1155,11 @@ static int lxcContainerMountFSBlockAuto(virDomainFSDefPtr fs, char *line = NULL; const char *type; - VIR_DEBUG("src=%s dst=%s", src, fs->dst); + VIR_DEBUG("src=%s dst=%s srcprefix=%s", src, fs->dst, srcprefix); /* First time around we use /etc/filesystems */ retry: - if (virAsprintf(&fslist, "/.oldroot%s", + if (virAsprintf(&fslist, "%s%s", srcprefix, tryProc ? "/proc/filesystems" : "/etc/filesystems") < 0) goto cleanup; @@ -1270,7 +1271,8 @@ cleanup: * probing for filesystem type */ static int lxcContainerMountFSBlockHelper(virDomainFSDefPtr fs, - const char *src) + const char *src, + const char *srcprefix) { int fsflags = 0; int ret = -1; @@ -1300,7 +1302,7 @@ static int lxcContainerMountFSBlockHelper(virDomainFSDefPtr fs, } ret = 0; } else { - ret = lxcContainerMountFSBlockAuto(fs, fsflags, src); + ret = lxcContainerMountFSBlockAuto(fs, fsflags, src, srcprefix); } cleanup: @@ -1318,7 +1320,7 @@ static int lxcContainerMountFSBlock(virDomainFSDefPtr fs, if (virAsprintf(&src, "%s%s", srcprefix, fs->src) < 0) goto cleanup; - ret = lxcContainerMountFSBlockHelper(fs, src); + ret = lxcContainerMountFSBlockHelper(fs, src, srcprefix); VIR_DEBUG("Done mounting filesystem ret=%d", ret); -- 1.8.3.2