From: Christian Brauner Date: Sun, 16 Jul 2017 20:58:47 +0000 (+0200) Subject: btrfs: simplify X-Git-Tag: lxc-2.1.0~32^2~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fc0fd9a08bf9646cecc598c9602da9832beea846;p=thirdparty%2Flxc.git btrfs: simplify Signed-off-by: Christian Brauner --- diff --git a/src/lxc/bdev/bdev.c b/src/lxc/bdev/bdev.c index 943fb69bf..d31957223 100644 --- a/src/lxc/bdev/bdev.c +++ b/src/lxc/bdev/bdev.c @@ -406,6 +406,10 @@ struct bdev *bdev_copy(struct lxc_container *c0, const char *cname, } TRACE("Detected \"%s\" storage driver", new->type); + if (bdevtype && !strcmp(orig->type, "btrfs") && + !strcmp(new->type, "btrfs")) + snap = 1; + if (new->ops->clone_paths(orig, new, oldname, cname, oldpath, lxcpath, snap, newsize, c0->lxc_conf) < 0) { ERROR("Failed getting pathnames for clone of \"%s\"", src); @@ -427,36 +431,6 @@ struct bdev *bdev_copy(struct lxc_container *c0, const char *cname, if (snap) return new; - /* https://github.com/lxc/lxc/issues/131 - * Use btrfs snapshot feature instead of rsync to restore if both orig - * and new are btrfs. - */ - if (bdevtype && strcmp(orig->type, "btrfs") == 0 && - strcmp(new->type, "btrfs") == 0 && - btrfs_same_fs(orig->dest, new->dest) == 0) { - struct rsync_data_char arg; - - if (btrfs_destroy(new) < 0) { - ERROR("Failed to destroy \"%s\" btrfs subvolume", new->dest); - goto err; - } - - arg.src = orig->dest; - arg.dest = new->dest; - if (am_unpriv()) - ret = userns_exec_1(c0->lxc_conf, btrfs_snapshot_wrapper, - &arg, "btrfs_snapshot_wrapper"); - else - ret = btrfs_snapshot(orig->dest, new->dest); - if (ret < 0) { - SYSERROR("Failed to create btrfs snapshot \"%s\" of \"%s\"", - new->dest, orig->dest); - goto err; - } - bdev_put(orig); - return new; - } - pid = fork(); if (pid < 0) { SYSERROR("fork");