]> git.proxmox.com Git - mirror_lxc.git/commitdiff
storage: handle prefixed rootfs paths
authorChristian Brauner <christian.brauner@ubuntu.com>
Sat, 1 Jul 2017 23:44:25 +0000 (01:44 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Sun, 2 Jul 2017 12:40:05 +0000 (14:40 +0200)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/bdev/lxcoverlay.c

index 377cf926359555e8ef1cb93420fde9201156b091..50a72e26a6e6f5a0de90bb02d683d9ae06e0e95f 100644 (file)
@@ -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;