]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
ovl_rsync: make sure to umount
authorSerge Hallyn <serge.hallyn@ubuntu.com>
Mon, 21 Sep 2015 19:33:23 +0000 (19:33 +0000)
committerStéphane Graber <stgraber@ubuntu.com>
Mon, 21 Sep 2015 20:47:35 +0000 (16:47 -0400)
Otherwise the kernel will umount when it gets around to it, but
that on lxc_destroy we may race with it and fail the rmdir of
the overmounted (BUSY) rootfs.

This makes lxc-test-snapshot pass for me again.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
src/lxc/bdev.c

index 46637dd2b3adeed961b457f861600e1dc95c61a0..33740919b1280ea0a87139f6d0cde75a5f019dbe 100644 (file)
@@ -2347,6 +2347,8 @@ static int rsync_delta_wrapper(void *data)
 
 static int ovl_rsync(struct ovl_rsync_data *data)
 {
+       int ret;
+
        if (setgid(0) < 0) {
                ERROR("Failed to setgid to 0");
                return -1;
@@ -2376,7 +2378,12 @@ static int ovl_rsync(struct ovl_rsync_data *data)
                ERROR("Failed mounting new container fs");
                return -1;
        }
-       if (do_rsync(data->orig->dest, data->new->dest) < 0) {
+       ret = do_rsync(data->orig->dest, data->new->dest);
+
+       overlayfs_umount(data->new);
+       overlayfs_umount(data->orig);
+
+       if (ret < 0) {
                ERROR("rsyncing %s to %s", data->orig->dest, data->new->dest);
                return -1;
        }