[lxc-devel] [PATCH] Fix clone issues
Serge Hallyn
serge.hallyn at ubuntu.com
Wed Nov 5 14:36:07 UTC 2014
Quoting KATOH Yasufumi (karma at jazz.email.ne.jp):
> This commit fixes two issues at the time of clone:
> * unnecessary directory is created when clone between overlayfs/aufs
> * clone failed when the end of rootfs path is not "/rootfs"
>
> Signed-off-by: KATOH Yasufumi <karma at jazz.email.ne.jp>
Great - thank you.
Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>
> ---
> src/lxc/bdev.c | 26 +++++++++++++++++++++++++-
> 1 file changed, 25 insertions(+), 1 deletion(-)
>
> diff --git a/src/lxc/bdev.c b/src/lxc/bdev.c
> index ae5c77c..c95f3f0 100644
> --- a/src/lxc/bdev.c
> +++ b/src/lxc/bdev.c
> @@ -3328,6 +3328,7 @@ struct bdev *bdev_copy(struct lxc_container *c0, const char *cname,
> const char *oldname = c0->name;
> const char *oldpath = c0->config_path;
> struct rsync_data data;
> + char *rootfs;
>
> /* if the container name doesn't show up in the rootfs path, then
> * we don't know how to come up with a new name
> @@ -3338,12 +3339,35 @@ struct bdev *bdev_copy(struct lxc_container *c0, const char *cname,
> return NULL;
> }
>
> - orig = bdev_init(c0->lxc_conf, src, src, NULL);
> + orig = bdev_init(c0->lxc_conf, src, NULL, NULL);
> if (!orig) {
> ERROR("failed to detect blockdev type for %s", src);
> return NULL;
> }
>
> + if (!orig->dest) {
> + int ret;
> + orig->dest = malloc(MAXPATHLEN);
> + if (!orig->dest) {
> + ERROR("out of memory");
> + bdev_put(orig);
> + return NULL;
> + }
> + rootfs = strrchr(orig->src, '/');
> + if (!rootfs) {
> + ERROR("invalid rootfs path");
> + bdev_put(orig);
> + return NULL;
> + }
> + rootfs++;
> + ret = snprintf(orig->dest, MAXPATHLEN, "%s/%s/%s", oldpath, oldname, rootfs);
> + if (ret < 0 || ret >= MAXPATHLEN) {
> + ERROR("rootfs path too long");
> + bdev_put(orig);
> + return NULL;
> + }
> + }
> +
> /*
> * special case for snapshot - if caller requested maybe_snapshot and
> * keepbdevtype and backing store is directory, then proceed with a copy
> --
> 2.1.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