[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH 5/5] lxc: don't unmount subtree if it contains the source of the mount



On Mon, Nov 24, 2014 at 09:54:46PM +0100, Cédric Bosdonnat wrote:
The typical case where we had a problem is with such a filesystem
definition as created by virt-sandbox-service:

   <filesystem type='bind' accessmode='passthrough'>
     <source dir='/var/lib/libvirt/filesystems/mysshd/var'/>
     <target dir='/var'/>
   </filesystem>

In this case, we don't want to unmount the /var subtree or we may
loose the access to the source folder.

I probably didn't quite get this.  This is only true when host root is
the root of the container, isn't it?  And in that case it doesn't make
much sense to do this.

---
src/lxc/lxc_container.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
index 12f3a41..334a1df 100644
--- a/src/lxc/lxc_container.c
+++ b/src/lxc/lxc_container.c
@@ -1597,11 +1597,15 @@ static int lxcContainerMountAllFS(virDomainDefPtr vmDef,
        if (STREQ(vmDef->fss[i]->dst, "/"))
            continue;

+        VIR_DEBUG("Mounting '%s' -> '%s'", vmDef->fss[i]->src, vmDef->fss[i]->dst);
+
        if (lxcContainerResolveSymlinks(vmDef->fss[i], false) < 0)
            return -1;

-        if (lxcContainerUnmountSubtree(vmDef->fss[i]->dst,
-                                       false) < 0)
+
+        if (!(vmDef->fss[i]->src &&
+              STRPREFIX(vmDef->fss[i]->src, vmDef->fss[i]->dst)) &&
+            lxcContainerUnmountSubtree(vmDef->fss[i]->dst, false) < 0)
            return -1;

        if (lxcContainerMountFS(vmDef->fss[i], sec_mount_options) < 0)
--
2.1.2

--
libvir-list mailing list
libvir-list redhat com
https://www.redhat.com/mailman/listinfo/libvir-list

Attachment: signature.asc
Description: Digital signature


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]