[lxc-devel] lxc-clone outputs some logs
KATOH Yasufumi
karma at jazz.email.ne.jp
Fri Oct 31 10:08:50 UTC 2014
Hi,
>>> On Thu, 30 Oct 2014 14:35:16 +0000
in message "Re: [lxc-devel] lxc-clone outputs some logs"
Serge Hallyn-san wrote:
> > > > After applying commit edf7734 "overlay and aufs clone_paths: be more
> > > > robust", clone was completed successfully but lxc-clone on unpriv env
> > > > is now output the following log:
> >
> > > > $ lxc-clone -o ct02 -n test -s -B overlayfs
> > > > lxc_container: conf.c: chown_mapped_root: 3649 Error stat /home/karma/.local/share/lxc/test/delta0
> > > > Created container test as snapshot of ct02
> > > > lxc_container: lxccontainer.c: copy_file: 2303 copy destination /home/karma/.local/share/lxc/test/lxc_rdepends exists
> > > > Created container test as snapshot of ct02
> >
> > > ct02 is the cloned container with overlayfs.
> >
> > I find out other problem. After applying that patch, in part of the
> > beginning of overlayfs_clonepath function, new->dest variable is,
> > for example:
> > "overlayfs:/home/karma/.local/share/lxc/ct01/rootfs:/home/karma/.local/share/lxc/ct02/delta0"
> >
> > So, as the result, run "mkdir_p(new->dest, 0755)", and create dir in
> > current dir.
> >
> > $ lxc-clone -o ct02 -n test -s -B overlayfs
> > lxc_container: conf.c: chown_mapped_root: 3649 Error stat /home/karma/.local/share/lxc/test/delta0
> > Created container test as snapshot of ct02
> > lxc_container: lxccontainer.c: copy_file: 2303 copy destination /home/karma/.local/share/lxc/test/lxc_rdepends exists
> > Created container test as snapshot of ct02
> > $ find overlayfs\:/
> > overlayfs:/
> > overlayfs:/home
> > overlayfs:/home/karma
> > overlayfs:/home/karma/.local
> > overlayfs:/home/karma/.local/share
> > overlayfs:/home/karma/.local/share/lxc
> > overlayfs:/home/karma/.local/share/lxc/ct01
> > overlayfs:/home/karma/.local/share/lxc/ct01/rootfs:
> > overlayfs:/home/karma/.local/share/lxc/ct01/rootfs:/home
> > overlayfs:/home/karma/.local/share/lxc/ct01/rootfs:/home/karma
> > overlayfs:/home/karma/.local/share/lxc/ct01/rootfs:/home/karma/.local
> > overlayfs:/home/karma/.local/share/lxc/ct01/rootfs:/home/karma/.local/share
> > overlayfs:/home/karma/.local/share/lxc/ct01/rootfs:/home/karma/.local/share/lxc
> > overlayfs:/home/karma/.local/share/lxc/ct01/rootfs:/home/karma/.local/share/lxc/test
> > overlayfs:/home/karma/.local/share/lxc/ct01/rootfs:/home/karma/.local/share/lxc/test/delta0
> Sorry, I'm not really following, and I guess I haven't been using overlayfs
> clones much lately. Do you how to fix it, and can you send a patch?
This problem is also caused when clone by aufs. (between aufs/olfs)
This problem is caused by passing invalid argument as bdev *new to
(aufs|overlayfs)_clonepath.
I don't understand your patch edf7734 well. But how about revert a
part of the commit edf7734? as following:
---
src/lxc/bdev.c | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/src/lxc/bdev.c b/src/lxc/bdev.c
index ae5c77c..a9f100c 100644
--- a/src/lxc/bdev.c
+++ b/src/lxc/bdev.c
@@ -3338,12 +3338,28 @@ 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;
+ }
+ ret = snprintf(orig->dest, MAXPATHLEN, "%s/%s/rootfs", oldpath, oldname);
+ 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
More information about the lxc-devel
mailing list