mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-02 17:37:17 +00:00
api_clone: don't remove storage if we haven't created it
In the best case we'll get errors about failing to remove it. In the worst case we'll be trying to delete the original container's rootfs. Reported-by: zoolook <nbensa+lxcusers@gmail.com> Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
This commit is contained in:
parent
ae3f8cf9a4
commit
176d9acb2e
@ -1866,7 +1866,7 @@ struct lxc_container *lxcapi_clone(struct lxc_container *c, const char *newname,
|
||||
{
|
||||
struct lxc_container *c2 = NULL;
|
||||
char newpath[MAXPATHLEN];
|
||||
int ret;
|
||||
int ret, storage_copied = 0;
|
||||
const char *n, *l;
|
||||
FILE *fout;
|
||||
|
||||
@ -1948,6 +1948,10 @@ struct lxc_container *lxcapi_clone(struct lxc_container *c, const char *newname,
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
// We've now successfully created c2's storage, so clear it out if we
|
||||
// fail after this
|
||||
storage_copied = 1;
|
||||
|
||||
if (!c2->save_config(c2, NULL))
|
||||
goto out;
|
||||
|
||||
@ -1961,6 +1965,8 @@ struct lxc_container *lxcapi_clone(struct lxc_container *c, const char *newname,
|
||||
out:
|
||||
container_mem_unlock(c);
|
||||
if (c2) {
|
||||
if (!storage_copied)
|
||||
c2->lxc_conf->rootfs.path = NULL;
|
||||
c2->destroy(c2);
|
||||
lxc_container_put(c2);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user