]> 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 19:43:38 +0000 (15:43 -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 b81827eaedb26c9090dbd3b5c72e524a5666e8a4..21a64f7014cab7ef63cb00c5346ff4fded97e7cc 100644 (file)
@@ -2339,6 +2339,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;
@@ -2368,7 +2370,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;
        }