From: Christian Brauner Date: Sat, 1 Jul 2017 23:44:25 +0000 (+0200) Subject: storage: handle prefixed rootfs paths X-Git-Tag: lxc-2.1.0~58^2~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4d463f625ba67a0143b2bc6bc5092696b500fb76;p=thirdparty%2Flxc.git storage: handle prefixed rootfs paths Signed-off-by: Christian Brauner --- diff --git a/src/lxc/bdev/lxcoverlay.c b/src/lxc/bdev/lxcoverlay.c index 377cf9263..50a72e26a 100644 --- a/src/lxc/bdev/lxcoverlay.c +++ b/src/lxc/bdev/lxcoverlay.c @@ -58,6 +58,8 @@ int ovl_clonepaths(struct bdev *orig, struct bdev *new, const char *oldname, const char *cname, const char *oldpath, const char *lxcpath, int snap, uint64_t newsize, struct lxc_conf *conf) { + char *src; + if (!snap) { ERROR("overlayfs is only for snapshot clones"); return -22; @@ -133,14 +135,15 @@ int ovl_clonepaths(struct bdev *orig, struct bdev *new, const char *oldname, WARN("Failed to update ownership of %s", work); free(work); + src = lxc_storage_get_path(orig->src, orig->type); // the src will be 'overlayfs:lowerdir:upperdir' - len = strlen(delta) + strlen(orig->src) + 12; + len = strlen(delta) + strlen(src) + 12; new->src = malloc(len); if (!new->src) { free(delta); return -ENOMEM; } - ret = snprintf(new->src, len, "overlayfs:%s:%s", orig->src, delta); + ret = snprintf(new->src, len, "overlayfs:%s:%s", src, delta); free(delta); if (ret < 0 || ret >= len) return -ENOMEM;