diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c index fdac43366..8e611c7d3 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,