[lxc-devel] [PATCH] destroy the original container after making sure the snapshot exists (fixes #224)
Serge Hallyn
serge.hallyn at ubuntu.com
Sun May 25 03:39:53 UTC 2014
Quoting S.Çağlar Onur (caglar at 10ur.org):
> Signed-off-by: S.Çağlar Onur <caglar at 10ur.org>
Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>
> ---
> src/lxc/lxccontainer.c | 17 ++++++++++-------
> 1 file changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c
> index fdac433..8e611c7 100644
> --- a/src/lxc/lxccontainer.c
> +++ b/src/lxc/lxccontainer.c
> @@ -3083,13 +3083,7 @@ static bool lxcapi_snapshot_restore(struct lxc_container *c, const char *snapnam
>
> if (!newname)
> newname = c->name;
> - if (strcmp(c->name, newname) == 0) {
> - if (!lxcapi_destroy(c)) {
> - ERROR("Could not destroy existing container %s", newname);
> - bdev_put(bdev);
> - return false;
> - }
> - }
> +
> ret = snprintf(clonelxcpath, MAXPATHLEN, "%ssnaps/%s", c->config_path, c->name);
> if (ret < 0 || ret >= MAXPATHLEN) {
> bdev_put(bdev);
> @@ -3105,6 +3099,15 @@ static bool lxcapi_snapshot_restore(struct lxc_container *c, const char *snapnam
> return false;
> }
>
> + if (strcmp(c->name, newname) == 0) {
> + if (!lxcapi_destroy(c)) {
> + ERROR("Could not destroy existing container %s", newname);
> + lxc_container_put(snap);
> + bdev_put(bdev);
> + return false;
> + }
> + }
> +
> if (strcmp(bdev->type, "dir") != 0 && strcmp(bdev->type, "loop") != 0)
> flags = LXC_CLONE_SNAPSHOT | LXC_CLONE_MAYBE_SNAPSHOT;
> rest = lxcapi_clone(snap, newname, c->config_path, flags,
> --
> 1.9.1
>
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel
More information about the lxc-devel
mailing list