]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
tree-wide: struct bdev -> struct lxc_storage
authorChristian Brauner <christian.brauner@ubuntu.com>
Sat, 29 Jul 2017 15:04:44 +0000 (17:04 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Mon, 31 Jul 2017 21:34:18 +0000 (23:34 +0200)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
28 files changed:
src/lxc/conf.c
src/lxc/lxccontainer.c
src/lxc/start.c
src/lxc/storage/aufs.c
src/lxc/storage/aufs.h
src/lxc/storage/btrfs.c
src/lxc/storage/btrfs.h
src/lxc/storage/dir.c
src/lxc/storage/dir.h
src/lxc/storage/loop.c
src/lxc/storage/loop.h
src/lxc/storage/lvm.c
src/lxc/storage/lvm.h
src/lxc/storage/nbd.c
src/lxc/storage/nbd.h
src/lxc/storage/overlay.c
src/lxc/storage/overlay.h
src/lxc/storage/rbd.c
src/lxc/storage/rbd.h
src/lxc/storage/rsync.c
src/lxc/storage/rsync.h
src/lxc/storage/storage.c
src/lxc/storage/storage.h
src/lxc/storage/storage_utils.c
src/lxc/storage/storage_utils.h
src/lxc/storage/zfs.c
src/lxc/storage/zfs.h
src/lxc/tools/lxc_create.c

index a54a7c26c7e81de0ffbdce0d18468659b0be86ab..18860f0a454b924f307ef7a4b51b68d05a90e0f8 100644 (file)
@@ -1171,7 +1171,7 @@ static int lxc_fill_autodev(const struct lxc_rootfs *rootfs)
 static int lxc_setup_rootfs(struct lxc_conf *conf)
 {
        int ret;
-       struct bdev *bdev;
+       struct lxc_storage *bdev;
        const struct lxc_rootfs *rootfs;
 
        rootfs = &conf->rootfs;
@@ -1189,7 +1189,7 @@ static int lxc_setup_rootfs(struct lxc_conf *conf)
                return -1;
        }
 
-       bdev = bdev_init(conf, rootfs->path, rootfs->mount, rootfs->options);
+       bdev = storage_init(conf, rootfs->path, rootfs->mount, rootfs->options);
        if (!bdev) {
                ERROR("Failed to mount rootfs \"%s\" onto \"%s\" with options \"%s\".",
                      rootfs->path, rootfs->mount,
@@ -1198,7 +1198,7 @@ static int lxc_setup_rootfs(struct lxc_conf *conf)
        }
 
        ret = bdev->ops->mount(bdev);
-       bdev_put(bdev);
+       storage_put(bdev);
        if (ret < 0) {
                ERROR("Failed to mount rootfs \"%s\" onto \"%s\" with options \"%s\".",
                      rootfs->path, rootfs->mount,
index a0389d617011cde41cd84e3a6d525b1d4d93c0ca..17039f836403971e1d943cdb2e44411391324bdc 100644 (file)
@@ -1154,16 +1154,16 @@ static bool create_container_dir(struct lxc_container *c)
        return ret == 0;
 }
 
-/*
- * do_bdev_create: thin wrapper around bdev_create().  Like bdev_create(),
- * it returns a mounted bdev on success, NULL on error.
+/* do_storage_create: thin wrapper around storage_create(). Like
+ * storage_create(), it returns a mounted bdev on success, NULL on error.
  */
-static struct bdev *do_bdev_create(struct lxc_container *c, const char *type,
-                                  struct bdev_specs *specs)
+static struct lxc_storage *do_storage_create(struct lxc_container *c,
+                                            const char *type,
+                                            struct bdev_specs *specs)
 {
        char *dest;
        size_t len;
-       struct bdev *bdev;
+       struct lxc_storage *bdev;
        int ret;
 
        /* rootfs.path or lxcpath/lxcname/rootfs */
@@ -1181,7 +1181,7 @@ static struct bdev *do_bdev_create(struct lxc_container *c, const char *type,
        if (ret < 0 || ret >= len)
                return NULL;
 
-       bdev = bdev_create(dest, type, c->name, specs);
+       bdev = storage_create(dest, type, c->name, specs);
        if (!bdev) {
                ERROR("Failed to create backing store type %s", type);
                return NULL;
@@ -1200,7 +1200,7 @@ static struct bdev *do_bdev_create(struct lxc_container *c, const char *type,
                if (chown_mapped_root(bdev->dest, c->lxc_conf) < 0) {
                        ERROR("Error chowning %s to container root", bdev->dest);
                        suggest_default_idmap();
-                       bdev_put(bdev);
+                       storage_put(bdev);
                        return NULL;
                }
        }
@@ -1232,7 +1232,7 @@ static bool create_run_template(struct lxc_container *c, char *tpath, bool need_
 
        if (pid == 0) { // child
                char *patharg, *namearg, *rootfsarg;
-               struct bdev *bdev = NULL;
+               struct lxc_storage *bdev = NULL;
                int i;
                int ret, len, nargs = 0;
                char **newargv;
@@ -1242,7 +1242,7 @@ static bool create_run_template(struct lxc_container *c, char *tpath, bool need_
                        exit(1);
                }
 
-               bdev = bdev_init(c->lxc_conf, c->lxc_conf->rootfs.path, c->lxc_conf->rootfs.mount, NULL);
+               bdev = storage_init(c->lxc_conf, c->lxc_conf->rootfs.path, c->lxc_conf->rootfs.mount, NULL);
                if (!bdev) {
                        ERROR("Error opening rootfs");
                        exit(1);
@@ -1694,12 +1694,13 @@ static bool do_lxcapi_create(struct lxc_container *c, const char *t,
        }
 
        if (pid == 0) { // child
-               struct bdev *bdev = NULL;
+               struct lxc_storage *bdev = NULL;
 
-               if (!(bdev = do_bdev_create(c, bdevtype, specs))) {
+               bdev = do_storage_create(c, bdevtype, specs);
+               if (!bdev) {
                        ERROR("Error creating backing store type %s for %s",
                                bdevtype ? bdevtype : "(none)", c->name);
-                       exit(1);
+                       exit(EXIT_FAILURE);
                }
 
                /* save config file again to store the new rootfs location */
@@ -1708,9 +1709,9 @@ static bool do_lxcapi_create(struct lxc_container *c, const char *t,
                        // parent task won't see bdev in config so we delete it
                        bdev->ops->umount(bdev);
                        bdev->ops->destroy(bdev);
-                       exit(1);
+                       exit(EXIT_FAILURE);
                }
-               exit(0);
+               exit(EXIT_SUCCESS);
        }
        if (wait_for_pid(pid) != 0)
                goto out_unlock;
@@ -2565,12 +2566,12 @@ static bool has_snapshots(struct lxc_container *c)
 
 static bool do_destroy_container(struct lxc_conf *conf) {
        if (am_unpriv()) {
-               if (userns_exec_1(conf, bdev_destroy_wrapper, conf,
-                                 "bdev_destroy_wrapper") < 0)
+               if (userns_exec_1(conf, storage_destroy_wrapper, conf,
+                                 "storage_destroy_wrapper") < 0)
                        return false;
                return true;
        }
-       return bdev_destroy(conf);
+       return storage_destroy(conf);
 }
 
 static int lxc_rmdir_onedev_wrapper(void *data)
@@ -3114,14 +3115,14 @@ static int copy_storage(struct lxc_container *c0, struct lxc_container *c,
                        const char *newtype, int flags, const char *bdevdata,
                        uint64_t newsize)
 {
-       struct bdev *bdev;
+       struct lxc_storage *bdev;
        int need_rdep;
 
        if (should_default_to_snapshot(c0, c))
                flags |= LXC_CLONE_SNAPSHOT;
 
-       bdev = bdev_copy(c0, c->name, c->config_path, newtype, flags, bdevdata,
-                        newsize, &need_rdep);
+       bdev = storage_copy(c0, c->name, c->config_path, newtype, flags,
+                           bdevdata, newsize, &need_rdep);
        if (!bdev) {
                ERROR("Error copying storage.");
                return -1;
@@ -3130,7 +3131,7 @@ static int copy_storage(struct lxc_container *c0, struct lxc_container *c,
        /* Set new rootfs. */
        free(c->lxc_conf->rootfs.path);
        c->lxc_conf->rootfs.path = strdup(bdev->src);
-       bdev_put(bdev);
+       storage_put(bdev);
 
        if (!c->lxc_conf->rootfs.path) {
                ERROR("Out of memory while setting storage path.");
@@ -3183,7 +3184,7 @@ static int clone_update_rootfs(struct clone_update_data *data)
        char **hookargs = data->hookargs;
        int ret = -1;
        char path[MAXPATHLEN];
-       struct bdev *bdev;
+       struct lxc_storage *bdev;
        FILE *fout;
        struct lxc_conf *conf = c->lxc_conf;
 
@@ -3203,13 +3204,13 @@ static int clone_update_rootfs(struct clone_update_data *data)
 
        if (unshare(CLONE_NEWNS) < 0)
                return -1;
-       bdev = bdev_init(c->lxc_conf, c->lxc_conf->rootfs.path, c->lxc_conf->rootfs.mount, NULL);
+       bdev = storage_init(c->lxc_conf, c->lxc_conf->rootfs.path, c->lxc_conf->rootfs.mount, NULL);
        if (!bdev)
                return -1;
        if (strcmp(bdev->type, "dir") != 0) {
                if (unshare(CLONE_NEWNS) < 0) {
                        ERROR("error unsharing mounts");
-                       bdev_put(bdev);
+                       storage_put(bdev);
                        return -1;
                }
                if (detect_shared_rootfs()) {
@@ -3219,7 +3220,7 @@ static int clone_update_rootfs(struct clone_update_data *data)
                        }
                }
                if (bdev->ops->mount(bdev) < 0) {
-                       bdev_put(bdev);
+                       storage_put(bdev);
                        return -1;
                }
        } else { // TODO come up with a better way
@@ -3247,14 +3248,14 @@ static int clone_update_rootfs(struct clone_update_data *data)
 
                if (run_lxc_hooks(c->name, "clone", conf, c->get_config_path(c), hookargs)) {
                        ERROR("Error executing clone hook for %s", c->name);
-                       bdev_put(bdev);
+                       storage_put(bdev);
                        return -1;
                }
        }
 
        if (!(flags & LXC_CLONE_KEEPNAME)) {
                ret = snprintf(path, MAXPATHLEN, "%s/etc/hostname", bdev->dest);
-               bdev_put(bdev);
+               storage_put(bdev);
 
                if (ret < 0 || ret >= MAXPATHLEN)
                        return -1;
@@ -3270,9 +3271,9 @@ static int clone_update_rootfs(struct clone_update_data *data)
                }
                if (fclose(fout) < 0)
                        return -1;
+       } else {
+               storage_put(bdev);
        }
-       else
-               bdev_put(bdev);
 
        return 0;
 }
@@ -3512,7 +3513,7 @@ static struct lxc_container *lxcapi_clone(struct lxc_container *c, const char *n
 
 static bool do_lxcapi_rename(struct lxc_container *c, const char *newname)
 {
-       struct bdev *bdev;
+       struct lxc_storage *bdev;
        struct lxc_container *newc;
 
        if (!c || !c->name || !c->config_path || !c->lxc_conf)
@@ -3522,14 +3523,14 @@ static bool do_lxcapi_rename(struct lxc_container *c, const char *newname)
                ERROR("Renaming a container with snapshots is not supported");
                return false;
        }
-       bdev = bdev_init(c->lxc_conf, c->lxc_conf->rootfs.path, c->lxc_conf->rootfs.mount, NULL);
+       bdev = storage_init(c->lxc_conf, c->lxc_conf->rootfs.path, c->lxc_conf->rootfs.mount, NULL);
        if (!bdev) {
                ERROR("Failed to find original backing store type");
                return false;
        }
 
        newc = lxcapi_clone(c, newname, c->config_path, LXC_CLONE_KEEPMACADDR, NULL, bdev->type, 0, NULL);
-       bdev_put(bdev);
+       storage_put(bdev);
        if (!newc) {
                lxc_container_put(newc);
                return false;
@@ -3641,7 +3642,7 @@ static int do_lxcapi_snapshot(struct lxc_container *c, const char *commentfile)
        if (!c || !lxcapi_is_defined(c))
                return -1;
 
-       if (!bdev_can_backup(c->lxc_conf)) {
+       if (!storage_can_backup(c->lxc_conf)) {
                ERROR("%s's backing store cannot be backed up.", c->name);
                ERROR("Your container must use another backing store type.");
                return -1;
@@ -3667,7 +3668,7 @@ static int do_lxcapi_snapshot(struct lxc_container *c, const char *commentfile)
         */
        flags = LXC_CLONE_SNAPSHOT | LXC_CLONE_KEEPMACADDR | LXC_CLONE_KEEPNAME |
                LXC_CLONE_KEEPBDEVTYPE | LXC_CLONE_MAYBE_SNAPSHOT;
-       if (bdev_is_dir(c->lxc_conf, c->lxc_conf->rootfs.path)) {
+       if (storage_is_dir(c->lxc_conf, c->lxc_conf->rootfs.path)) {
                ERROR("Snapshot of directory-backed container requested.");
                ERROR("Making a copy-clone.  If you do want snapshots, then");
                ERROR("please create an aufs or overlay clone first, snapshot that");
@@ -3861,7 +3862,7 @@ static bool do_lxcapi_snapshot_restore(struct lxc_container *c, const char *snap
        char clonelxcpath[MAXPATHLEN];
        int flags = 0;
        struct lxc_container *snap, *rest;
-       struct bdev *bdev;
+       struct lxc_storage *bdev;
        bool b = false;
 
        if (!c || !c->name || !c->config_path)
@@ -3872,7 +3873,7 @@ static bool do_lxcapi_snapshot_restore(struct lxc_container *c, const char *snap
                return false;
        }
 
-       bdev = bdev_init(c->lxc_conf, c->lxc_conf->rootfs.path, c->lxc_conf->rootfs.mount, NULL);
+       bdev = storage_init(c->lxc_conf, c->lxc_conf->rootfs.path, c->lxc_conf->rootfs.mount, NULL);
        if (!bdev) {
                ERROR("Failed to find original backing store type");
                return false;
@@ -3882,7 +3883,7 @@ static bool do_lxcapi_snapshot_restore(struct lxc_container *c, const char *snap
                newname = c->name;
 
        if (!get_snappath_dir(c, clonelxcpath)) {
-               bdev_put(bdev);
+               storage_put(bdev);
                return false;
        }
        // how should we lock this?
@@ -3891,7 +3892,7 @@ static bool do_lxcapi_snapshot_restore(struct lxc_container *c, const char *snap
        if (!snap || !lxcapi_is_defined(snap)) {
                ERROR("Could not open snapshot %s", snapname);
                if (snap) lxc_container_put(snap);
-               bdev_put(bdev);
+               storage_put(bdev);
                return false;
        }
 
@@ -3899,7 +3900,7 @@ static bool do_lxcapi_snapshot_restore(struct lxc_container *c, const char *snap
                if (!container_destroy(c)) {
                        ERROR("Could not destroy existing container %s", newname);
                        lxc_container_put(snap);
-                       bdev_put(bdev);
+                       storage_put(bdev);
                        return false;
                }
        }
@@ -3908,7 +3909,7 @@ static bool do_lxcapi_snapshot_restore(struct lxc_container *c, const char *snap
                flags = LXC_CLONE_SNAPSHOT | LXC_CLONE_MAYBE_SNAPSHOT;
        rest = lxcapi_clone(snap, newname, c->config_path, flags,
                        bdev->type, NULL, 0, NULL);
-       bdev_put(bdev);
+       storage_put(bdev);
        if (rest && lxcapi_is_defined(rest))
                b = true;
        if (rest)
index c2be74606f69c37e43eefb35292c280ac1a5ff19..8551f535f0e7e36e3663f0219eaa3f4cb6a98e7e 100644 (file)
@@ -1767,10 +1767,12 @@ static int lxc_rmdir_onedev_wrapper(void *data)
 
 static bool do_destroy_container(struct lxc_conf *conf) {
        if (am_unpriv()) {
-               if (userns_exec_1(conf, bdev_destroy_wrapper, conf,
-                                 "bdev_destroy_wrapper") < 0)
+               if (userns_exec_1(conf, storage_destroy_wrapper, conf,
+                                 "storage_destroy_wrapper") < 0)
                        return false;
+
                return true;
        }
-       return bdev_destroy(conf);
+
+       return storage_destroy(conf);
 }
index 4efcc8e73f075539efd4f0b46ff85076f82d6790..0ba5288e6b1102de86afb711df5cb3dbf784770e 100644 (file)
 #include "storage.h"
 #include "utils.h"
 
-lxc_log_define(lxcaufs, lxc);
+lxc_log_define(aufs, lxc);
 
 /* the bulk of this needs to become a common helper */
 extern char *dir_new_path(char *src, const char *oldname, const char *name,
                const char *oldpath, const char *lxcpath);
 
-int aufs_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)
+int aufs_clonepaths(struct lxc_storage *orig, struct lxc_storage *new,
+                   const char *oldname, const char *cname, const char *oldpath,
+                   const char *lxcpath, int snap, uint64_t newsize,
+                   struct lxc_conf *conf)
 {
        if (!snap) {
                ERROR("aufs is only for snapshot clones");
@@ -172,7 +173,7 @@ int aufs_clonepaths(struct bdev *orig, struct bdev *new, const char *oldname,
  * changes after starting the container are written to
  * $lxcpath/$lxcname/delta0
  */
-int aufs_create(struct bdev *bdev, const char *dest, const char *n,
+int aufs_create(struct lxc_storage *bdev, const char *dest, const char *n,
                struct bdev_specs *specs)
 {
        char *delta;
@@ -214,7 +215,7 @@ int aufs_create(struct bdev *bdev, const char *dest, const char *n,
        return 0;
 }
 
-int aufs_destroy(struct bdev *orig)
+int aufs_destroy(struct lxc_storage *orig)
 {
        char *upper;
 
@@ -235,7 +236,7 @@ bool aufs_detect(const char *path)
        return false;
 }
 
-int aufs_mount(struct bdev *bdev)
+int aufs_mount(struct lxc_storage *bdev)
 {
        char *tmp, *options, *dup, *lower, *upper;
        int len;
@@ -307,7 +308,7 @@ int aufs_mount(struct bdev *bdev)
        return ret;
 }
 
-int aufs_umount(struct bdev *bdev)
+int aufs_umount(struct lxc_storage *bdev)
 {
        if (strcmp(bdev->type, "aufs"))
                return -22;
index a0dcac3eb08dff81eeaf19f8dac2e390927895c7..dfebbe966143e1c4d842ea1ad22d0c19a2017708 100644 (file)
 #include <mntent.h>
 #endif
 
-/* defined in bdev.h */
-struct bdev;
+struct lxc_storage;
 
-/* defined in lxccontainer.h */
 struct bdev_specs;
 
-/* defined conf.h */
 struct lxc_conf;
 
-/* defined in conf.h */
 struct lxc_rootfs;
 
-/*
- * Functions associated with an aufs bdev struct.
- */
-int aufs_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);
-int aufs_create(struct bdev *bdev, const char *dest, const char *n,
+int aufs_clonepaths(struct lxc_storage *orig, struct lxc_storage *new,
+                   const char *oldname, const char *cname, const char *oldpath,
+                   const char *lxcpath, int snap, uint64_t newsize,
+                   struct lxc_conf *conf);
+int aufs_create(struct lxc_storage *bdev, const char *dest, const char *n,
                struct bdev_specs *specs);
-int aufs_destroy(struct bdev *orig);
+int aufs_destroy(struct lxc_storage *orig);
 bool aufs_detect(const char *path);
-int aufs_mount(struct bdev *bdev);
-int aufs_umount(struct bdev *bdev);
+int aufs_mount(struct lxc_storage *bdev);
+int aufs_umount(struct lxc_storage *bdev);
 
-/*
- * Get rootfs path for aufs backed containers. Allocated memory must be freed
- * by caller.
+/* Get rootfs path for aufs backed containers. Allocated memory must be freed by
+ * caller.
  */
 char *aufs_get_rootfs(const char *rootfs_path, size_t *rootfslen);
 
index 189c307caea9f6597eddcc08ac139857f103b0c0..18755aa019045fe4285b8ec0fedb4ee4fe300884 100644 (file)
@@ -42,7 +42,7 @@
 #include "storage.h"
 #include "utils.h"
 
-lxc_log_define(lxcbtrfs, lxc);
+lxc_log_define(btrfs, lxc);
 
 /*
  * Return the full path of objid under dirid.  Let's say dirid is
@@ -188,7 +188,7 @@ bool btrfs_detect(const char *path)
        return false;
 }
 
-int btrfs_mount(struct bdev *bdev)
+int btrfs_mount(struct lxc_storage *bdev)
 {
        unsigned long mntflags;
        char *mntdata, *src;
@@ -212,7 +212,7 @@ int btrfs_mount(struct bdev *bdev)
        return ret;
 }
 
-int btrfs_umount(struct bdev *bdev)
+int btrfs_umount(struct lxc_storage *bdev)
 {
        if (strcmp(bdev->type, "btrfs"))
                return -22;
@@ -371,10 +371,10 @@ int btrfs_snapshot_wrapper(void *data)
        return btrfs_snapshot(src, arg->dest);
 }
 
-int btrfs_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)
+int btrfs_clonepaths(struct lxc_storage *orig, struct lxc_storage *new,
+                    const char *oldname, const char *cname,
+                    const char *oldpath, const char *lxcpath, int snap,
+                    uint64_t newsize, struct lxc_conf *conf)
 {
        char *src;
 
@@ -417,8 +417,8 @@ int btrfs_clonepaths(struct bdev *orig, struct bdev *new, const char *oldname,
        return 0;
 }
 
-bool btrfs_create_clone(struct lxc_conf *conf, struct bdev *orig,
-                       struct bdev *new, uint64_t newsize)
+bool btrfs_create_clone(struct lxc_conf *conf, struct lxc_storage *orig,
+                       struct lxc_storage *new, uint64_t newsize)
 {
        int ret;
        struct rsync_data data = {0, 0};
@@ -460,8 +460,8 @@ bool btrfs_create_clone(struct lxc_conf *conf, struct bdev *orig,
        return true;
 }
 
-bool btrfs_create_snapshot(struct lxc_conf *conf, struct bdev *orig,
-                          struct bdev *new, uint64_t newsize)
+bool btrfs_create_snapshot(struct lxc_conf *conf, struct lxc_storage *orig,
+                          struct lxc_storage *new, uint64_t newsize)
 {
        int ret;
 
@@ -823,7 +823,7 @@ bool btrfs_try_remove_subvol(const char *path)
        return btrfs_recursive_destroy(path) == 0;
 }
 
-int btrfs_destroy(struct bdev *orig)
+int btrfs_destroy(struct lxc_storage *orig)
 {
        char *src;
 
@@ -832,7 +832,7 @@ int btrfs_destroy(struct bdev *orig)
        return btrfs_recursive_destroy(src);
 }
 
-int btrfs_create(struct bdev *bdev, const char *dest, const char *n,
+int btrfs_create(struct lxc_storage *bdev, const char *dest, const char *n,
                 struct bdev_specs *specs)
 {
        int ret;
index d88e1be2ca21efa358cb6e34e7b1f824f1ed197e..7d0253994c449bf512aa18669f1d9767fcc4be4b 100644 (file)
@@ -366,13 +366,10 @@ BTRFS_SETGET_STACK_FUNCS(stack_root_ref_sequence, struct btrfs_root_ref, sequenc
 /* defined as btrfs_stack_root_ref_name_len */
 BTRFS_SETGET_STACK_FUNCS(stack_root_ref_name_len, struct btrfs_root_ref, name_len, 16);
 
-/* defined in bdev.h */
-struct bdev;
+struct lxc_storage;
 
-/* defined in lxccontainer.h */
 struct bdev_specs;
 
-/* defined conf.h */
 struct lxc_conf;
 
 struct mytree_node {
@@ -387,35 +384,30 @@ struct my_btrfs_tree {
        int num;
 };
 
-/*
- * Functions associated with a btrfs bdev struct.
- */
-int btrfs_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);
-int btrfs_create(struct bdev *bdev, const char *dest, const char *n,
-                struct bdev_specs *specs);
-int btrfs_destroy(struct bdev *orig);
-bool btrfs_detect(const char *path);
-int btrfs_mount(struct bdev *bdev);
-int btrfs_umount(struct bdev *bdev);
-
-/*
- * Helper functions
- */
-char *get_btrfs_subvol_path(int fd, u64 dir_id, u64 objid, char *name,
-                           int name_len);
-int btrfs_list_get_path_rootid(int fd, u64 *treeid);
-bool is_btrfs_fs(const char *path);
-int is_btrfs_subvol(const char *path);
-bool btrfs_try_remove_subvol(const char *path);
-int btrfs_same_fs(const char *orig, const char *new);
-int btrfs_snapshot(const char *orig, const char *new);
-int btrfs_snapshot_wrapper(void *data);
-bool btrfs_create_clone(struct lxc_conf *conf, struct bdev *orig,
-                       struct bdev *new, uint64_t newsize);
-bool btrfs_create_snapshot(struct lxc_conf *conf, struct bdev *orig,
-                          struct bdev *new, uint64_t newsize);
-
-#endif // __LXC_BTRFS_H
+extern int btrfs_clonepaths(struct lxc_storage *orig, struct lxc_storage *new,
+                           const char *oldname, const char *cname,
+                           const char *oldpath, const char *lxcpath, int snap,
+                           uint64_t newsize, struct lxc_conf *conf);
+extern int btrfs_create(struct lxc_storage *bdev, const char *dest,
+                       const char *n, struct bdev_specs *specs);
+extern int btrfs_destroy(struct lxc_storage *orig);
+extern bool btrfs_detect(const char *path);
+extern int btrfs_mount(struct lxc_storage *bdev);
+extern int btrfs_umount(struct lxc_storage *bdev);
+
+extern char *get_btrfs_subvol_path(int fd, u64 dir_id, u64 objid, char *name,
+                                  int name_len);
+extern int btrfs_list_get_path_rootid(int fd, u64 *treeid);
+extern bool is_btrfs_fs(const char *path);
+extern int is_btrfs_subvol(const char *path);
+extern bool btrfs_try_remove_subvol(const char *path);
+extern int btrfs_same_fs(const char *orig, const char *new);
+extern int btrfs_snapshot(const char *orig, const char *new);
+extern int btrfs_snapshot_wrapper(void *data);
+extern bool btrfs_create_clone(struct lxc_conf *conf, struct lxc_storage *orig,
+                              struct lxc_storage *new, uint64_t newsize);
+extern bool btrfs_create_snapshot(struct lxc_conf *conf,
+                                 struct lxc_storage *orig,
+                                 struct lxc_storage *new, uint64_t newsize);
+
+#endif /* __LXC_BTRFS_H */
index bca8cda4a1c71ead1f4dee3e29e813b10565d0de..9a050b227815f39715464bb756caef947aa2693c 100644 (file)
 #include "storage.h"
 #include "utils.h"
 
-lxc_log_define(lxcdir, lxc);
+lxc_log_define(dir, lxc);
 
-/*
- * for a simple directory bind mount, we substitute the old container
- * name and paths for the new
+/* For a simple directory bind mount, we substitute the old container name and
+ * paths for the new.
  */
-int dir_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)
+int dir_clonepaths(struct lxc_storage *orig, struct lxc_storage *new,
+                  const char *oldname, const char *cname, const char *oldpath,
+                  const char *lxcpath, int snap, uint64_t newsize,
+                  struct lxc_conf *conf)
 {
        char *src_no_prefix;
        int ret;
@@ -75,7 +75,7 @@ int dir_clonepaths(struct bdev *orig, struct bdev *new, const char *oldname,
        return 0;
 }
 
-int dir_create(struct bdev *bdev, const char *dest, const char *n,
+int dir_create(struct lxc_storage *bdev, const char *dest, const char *n,
               struct bdev_specs *specs)
 {
        int ret;
@@ -118,7 +118,7 @@ int dir_create(struct bdev *bdev, const char *dest, const char *n,
        return 0;
 }
 
-int dir_destroy(struct bdev *orig)
+int dir_destroy(struct lxc_storage *orig)
 {
        int ret;
        char *src;
@@ -145,7 +145,7 @@ bool dir_detect(const char *path)
        return false;
 }
 
-int dir_mount(struct bdev *bdev)
+int dir_mount(struct lxc_storage *bdev)
 {
        int ret;
        unsigned long mflags, mntflags;
@@ -186,7 +186,7 @@ int dir_mount(struct bdev *bdev)
        return ret;
 }
 
-int dir_umount(struct bdev *bdev)
+int dir_umount(struct lxc_storage *bdev)
 {
        if (strcmp(bdev->type, "dir"))
                return -22;
index d63c6690094ea20694f60ff8dc3eacd96c8ae61b..6858e0040539d386d803330fcb9861c51b11c014 100644 (file)
 #include <stdbool.h>
 #include <stdint.h>
 
-/* defined in bdev.h */
-struct bdev;
+struct lxc_storage;
 
-/* defined in lxccontainer.h */
 struct bdev_specs;
 
-/* defined conf.h */
 struct lxc_conf;
 
-/*
- * Functions associated with a dir bdev struct.
- */
-int dir_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);
-int dir_create(struct bdev *bdev, const char *dest, const char *n,
-               struct bdev_specs *specs);
-int dir_destroy(struct bdev *orig);
-bool dir_detect(const char *path);
-int dir_mount(struct bdev *bdev);
-int dir_umount(struct bdev *bdev);
+extern int dir_clonepaths(struct lxc_storage *orig, struct lxc_storage *new,
+                         const char *oldname, const char *cname,
+                         const char *oldpath, const char *lxcpath, int snap,
+                         uint64_t newsize, struct lxc_conf *conf);
+extern int dir_create(struct lxc_storage *bdev, const char *dest, const char *n,
+                     struct bdev_specs *specs);
+extern int dir_destroy(struct lxc_storage *orig);
+extern bool dir_detect(const char *path);
+extern int dir_mount(struct lxc_storage *bdev);
+extern int dir_umount(struct lxc_storage *bdev);
 
 #endif /* __LXC_DIR_H */
index 95cf856bc684a2053c46b61086a201623cadaf4c..8ceddc60a5236e5bcbd712fbec2ed7c406b3921e 100644 (file)
@@ -40,7 +40,7 @@
 #include "storage_utils.h"
 #include "utils.h"
 
-lxc_log_define(lxcloop, lxc);
+lxc_log_define(loop, lxc);
 
 static int do_loop_create(const char *path, uint64_t size, const char *fstype);
 
@@ -48,9 +48,10 @@ static int do_loop_create(const char *path, uint64_t size, const char *fstype);
  * No idea what the original blockdev will be called, but the copy will be
  * called $lxcpath/$lxcname/rootdev
  */
-int loop_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)
+int loop_clonepaths(struct lxc_storage *orig, struct lxc_storage *new,
+                   const char *oldname, const char *cname, const char *oldpath,
+                   const char *lxcpath, int snap, uint64_t newsize,
+                   struct lxc_conf *conf)
 {
        uint64_t size = newsize;
        int len, ret;
@@ -129,7 +130,7 @@ int loop_clonepaths(struct bdev *orig, struct bdev *new, const char *oldname,
        return 0;
 }
 
-int loop_create(struct bdev *bdev, const char *dest, const char *n,
+int loop_create(struct lxc_storage *bdev, const char *dest, const char *n,
                struct bdev_specs *specs)
 {
        const char *fstype;
@@ -202,7 +203,7 @@ int loop_create(struct bdev *bdev, const char *dest, const char *n,
        return 0;
 }
 
-int loop_destroy(struct bdev *orig) {
+int loop_destroy(struct lxc_storage *orig) {
        return unlink(orig->src + 5);
 }
 
@@ -224,7 +225,7 @@ bool loop_detect(const char *path)
        return false;
 }
 
-int loop_mount(struct bdev *bdev)
+int loop_mount(struct lxc_storage *bdev)
 {
        int ret, loopfd;
        char loname[MAXPATHLEN];
@@ -261,7 +262,7 @@ int loop_mount(struct bdev *bdev)
        return 0;
 }
 
-int loop_umount(struct bdev *bdev)
+int loop_umount(struct lxc_storage *bdev)
 {
        int ret, saved_errno;
 
index 9c7baa2a7cfb5cd9ad4c2037b6d274d01036f171..a8b1a41854071b8ed41816caec64de8e8696a0a5 100644 (file)
 #include <stdbool.h>
 #include <stdint.h>
 
-/* defined in bdev.h */
-struct bdev;
+struct lxc_storage;
 
-/* defined in lxccontainer.h */
 struct bdev_specs;
 
-/* defined conf.h */
 struct lxc_conf;
 
-/*
- * functions associated with a loop bdev struct
- */
-int loop_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);
-int loop_create(struct bdev *bdev, const char *dest, const char *n,
-               struct bdev_specs *specs);
-int loop_destroy(struct bdev *orig);
-bool loop_detect(const char *path);
-int loop_mount(struct bdev *bdev);
-int loop_umount(struct bdev *bdev);
+extern int loop_clonepaths(struct lxc_storage *orig, struct lxc_storage *new,
+                          const char *oldname, const char *cname,
+                          const char *oldpath, const char *lxcpath, int snap,
+                          uint64_t newsize, struct lxc_conf *conf);
+extern int loop_create(struct lxc_storage *bdev, const char *dest,
+                      const char *n, struct bdev_specs *specs);
+extern int loop_destroy(struct lxc_storage *orig);
+extern bool loop_detect(const char *path);
+extern int loop_mount(struct lxc_storage *bdev);
+extern int loop_umount(struct lxc_storage *bdev);
 
 #endif /* __LXC_LOOP_H */
index 67d83f71c5262a76a09340bcf6ec35189bdc5c4c..97fcce0bd9cc5dd54cb9b14d105c6ee851af1a9a 100644 (file)
@@ -44,7 +44,7 @@
 #include <sys/mkdev.h>
 #endif
 
-lxc_log_define(lxclvm, lxc);
+lxc_log_define(lvm, lxc);
 
 struct lvcreate_args {
        const char *size;
@@ -232,7 +232,7 @@ bool lvm_detect(const char *path)
        return true;
 }
 
-int lvm_mount(struct bdev *bdev)
+int lvm_mount(struct lxc_storage *bdev)
 {
        char *src;
 
@@ -250,7 +250,7 @@ int lvm_mount(struct bdev *bdev)
        return mount_unknown_fs(src, bdev->dest, bdev->mntopts);
 }
 
-int lvm_umount(struct bdev *bdev)
+int lvm_umount(struct lxc_storage *bdev)
 {
        if (strcmp(bdev->type, "lvm"))
                return -22;
@@ -371,9 +371,10 @@ int lvm_snapshot(const char *orig, const char *path, uint64_t size)
        return 0;
 }
 
-int lvm_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)
+int lvm_clonepaths(struct lxc_storage *orig, struct lxc_storage *new,
+                  const char *oldname, const char *cname, const char *oldpath,
+                  const char *lxcpath, int snap, uint64_t newsize,
+                  struct lxc_conf *conf)
 {
        int len, ret;
        const char *vg;
@@ -455,8 +456,8 @@ int lvm_clonepaths(struct bdev *orig, struct bdev *new, const char *oldname,
        return 0;
 }
 
-bool lvm_create_clone(struct lxc_conf *conf, struct bdev *orig,
-                     struct bdev *new, uint64_t newsize)
+bool lvm_create_clone(struct lxc_conf *conf, struct lxc_storage *orig,
+                     struct lxc_storage *new, uint64_t newsize)
 {
        char *src;
        const char *thinpool;
@@ -516,8 +517,8 @@ bool lvm_create_clone(struct lxc_conf *conf, struct bdev *orig,
        return true;
 }
 
-bool lvm_create_snapshot(struct lxc_conf *conf, struct bdev *orig,
-                        struct bdev *new, uint64_t newsize)
+bool lvm_create_snapshot(struct lxc_conf *conf, struct lxc_storage *orig,
+                        struct lxc_storage *new, uint64_t newsize)
 {
        int ret;
        char *newsrc, *origsrc;
@@ -547,7 +548,7 @@ bool lvm_create_snapshot(struct lxc_conf *conf, struct bdev *orig,
        return true;
 }
 
-int lvm_destroy(struct bdev *orig)
+int lvm_destroy(struct lxc_storage *orig)
 {
        int ret;
        char cmd_output[MAXPATHLEN];
@@ -566,7 +567,7 @@ int lvm_destroy(struct bdev *orig)
        return 0;
 }
 
-int lvm_create(struct bdev *bdev, const char *dest, const char *n,
+int lvm_create(struct lxc_storage *bdev, const char *dest, const char *n,
               struct bdev_specs *specs)
 {
        const char *vg, *thinpool, *fstype, *lv = n;
index a89ca669308af02f31fb0d5e131117a128736eb8..6a82f801a688f7b4112645ad4f31f6e2fbda816d 100644 (file)
 #include <stdbool.h>
 #include <stdint.h>
 
-/* defined in bdev.h */
-struct bdev;
+struct lxc_storage;
 
-/* defined in lxccontainer.h */
 struct bdev_specs;
 
-/* defined conf.h */
 struct lxc_conf;
 
-/*
- * Functions associated with an lvm bdev struct.
- */
-bool lvm_detect(const char *path);
-int lvm_mount(struct bdev *bdev);
-int lvm_umount(struct bdev *bdev);
-int lvm_compare_lv_attr(const char *path, int pos, const char expected);
-int lvm_is_thin_volume(const char *path);
-int lvm_is_thin_pool(const char *path);
-int lvm_snapshot(const char *orig, const char *path, uint64_t size);
-int lvm_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);
-int lvm_destroy(struct bdev *orig);
-int lvm_create(struct bdev *bdev, const char *dest, const char *n,
-               struct bdev_specs *specs);
-bool lvm_create_clone(struct lxc_conf *conf, struct bdev *orig,
-                     struct bdev *new, uint64_t newsize);
-bool lvm_create_snapshot(struct lxc_conf *conf, struct bdev *orig,
-                        struct bdev *new, uint64_t newsize);
+extern bool lvm_detect(const char *path);
+extern int lvm_mount(struct lxc_storage *bdev);
+extern int lvm_umount(struct lxc_storage *bdev);
+extern int lvm_compare_lv_attr(const char *path, int pos, const char expected);
+extern int lvm_is_thin_volume(const char *path);
+extern int lvm_is_thin_pool(const char *path);
+extern int lvm_snapshot(const char *orig, const char *path, uint64_t size);
+extern int lvm_clonepaths(struct lxc_storage *orig, struct lxc_storage *new,
+                         const char *oldname, const char *cname,
+                         const char *oldpath, const char *lxcpath, int snap,
+                         uint64_t newsize, struct lxc_conf *conf);
+extern int lvm_destroy(struct lxc_storage *orig);
+extern int lvm_create(struct lxc_storage *bdev, const char *dest, const char *n,
+                     struct bdev_specs *specs);
+extern bool lvm_create_clone(struct lxc_conf *conf, struct lxc_storage *orig,
+                            struct lxc_storage *new, uint64_t newsize);
+extern bool lvm_create_snapshot(struct lxc_conf *conf, struct lxc_storage *orig,
+                               struct lxc_storage *new, uint64_t newsize);
 
 #endif /* __LXC_LVM_H */
index 2a76143fc50e7664806706e114fbd7a64e468a81..1fff5b60e2ca24de35b3e3436288418a1b3a1aaf 100644 (file)
@@ -37,7 +37,7 @@
 #include "storage_utils.h"
 #include "utils.h"
 
-lxc_log_define(lxcnbd, lxc);
+lxc_log_define(nbd, lxc);
 
 struct nbd_attach_data {
        const char *nbd;
@@ -88,20 +88,21 @@ void detach_nbd_idx(int idx)
        nbd_detach(path);
 }
 
-int nbd_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)
+int nbd_clonepaths(struct lxc_storage *orig, struct lxc_storage *new,
+                  const char *oldname, const char *cname, const char *oldpath,
+                  const char *lxcpath, int snap, uint64_t newsize,
+                  struct lxc_conf *conf)
 {
        return -ENOSYS;
 }
 
-int nbd_create(struct bdev *bdev, const char *dest, const char *n,
-               struct bdev_specs *specs)
+int nbd_create(struct lxc_storage *bdev, const char *dest, const char *n,
+              struct bdev_specs *specs)
 {
        return -ENOSYS;
 }
 
-int nbd_destroy(struct bdev *orig)
+int nbd_destroy(struct lxc_storage *orig)
 {
        return -ENOSYS;
 }
@@ -114,7 +115,7 @@ bool nbd_detect(const char *path)
        return false;
 }
 
-int nbd_mount(struct bdev *bdev)
+int nbd_mount(struct lxc_storage *bdev)
 {
        int ret = -1, partition;
        char *src;
@@ -154,7 +155,7 @@ int nbd_mount(struct bdev *bdev)
        return ret;
 }
 
-int nbd_umount(struct bdev *bdev)
+int nbd_umount(struct lxc_storage *bdev)
 {
        if (strcmp(bdev->type, "nbd"))
                return -22;
index 52ce8cb05ffc96090252dfc2d5a2f8902e26ba05..bd23359476902a6a993fde8f6082fbd6b08033b0 100644 (file)
 #include <stdbool.h>
 #include <stdint.h>
 
-/* defined in bdev.h */
-struct bdev;
+struct lxc_storage;
 
-/* defined in lxccontainer.h */
 struct bdev_specs;
 
-/* defined conf.h */
 struct lxc_conf;
 
-/*
- * Functions associated with an nbd bdev struct.
- */
-int nbd_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);
-int nbd_create(struct bdev *bdev, const char *dest, const char *n,
-               struct bdev_specs *specs);
-int nbd_destroy(struct bdev *orig);
-bool nbd_detect(const char *path);
-int nbd_mount(struct bdev *bdev);
-int nbd_umount(struct bdev *bdev);
-
-/* helpers */
-bool attach_nbd(char *src, struct lxc_conf *conf);
-void detach_nbd_idx(int idx);
-bool requires_nbd(const char *path);
+extern int nbd_clonepaths(struct lxc_storage *orig, struct lxc_storage *new,
+                         const char *oldname, const char *cname,
+                         const char *oldpath, const char *lxcpath, int snap,
+                         uint64_t newsize, struct lxc_conf *conf);
+extern int nbd_create(struct lxc_storage *bdev, const char *dest, const char *n,
+                     struct bdev_specs *specs);
+extern int nbd_destroy(struct lxc_storage *orig);
+extern bool nbd_detect(const char *path);
+extern int nbd_mount(struct lxc_storage *bdev);
+extern int nbd_umount(struct lxc_storage *bdev);
+
+extern bool attach_nbd(char *src, struct lxc_conf *conf);
+extern void detach_nbd_idx(int idx);
+extern bool requires_nbd(const char *path);
 
 #endif /* __LXC_NBD_H */
index ec57a67191a3ac1cdfc125c757415e8a68ead790..7a41c0b85e847c30b7588d877e53c5bc10919184 100644 (file)
 #include "storage_utils.h"
 #include "utils.h"
 
-lxc_log_define(lxcoverlay, lxc);
+lxc_log_define(overlay, lxc);
 
 static char *ovl_name;
 static char *ovl_version[] = {"overlay", "overlayfs"};
 
 static char *ovl_detect_name(void);
-static int ovl_do_rsync(struct bdev *orig, struct bdev *new,
+static int ovl_do_rsync(struct lxc_storage *orig, struct lxc_storage *new,
                        struct lxc_conf *conf);
 static int ovl_remount_on_enodev(const char *lower, const char *target,
                                 const char *name, unsigned long mountflags,
                                 const void *options);
 
-int ovl_clonepaths(struct bdev *orig, struct bdev *new, const char *oldname,
+int ovl_clonepaths(struct lxc_storage *orig, struct lxc_storage *new, const char *oldname,
                   const char *cname, const char *oldpath, const char *lxcpath,
                   int snap, uint64_t newsize, struct lxc_conf *conf)
 {
@@ -315,7 +315,7 @@ int ovl_clonepaths(struct bdev *orig, struct bdev *new, const char *oldname,
  * "<lxcpath>/<lxcname>/rootfs" to have the created container, while all changes
  * after starting the container are written to "<lxcpath>/<lxcname>/delta0".
  */
-int ovl_create(struct bdev *bdev, const char *dest, const char *n,
+int ovl_create(struct lxc_storage *bdev, const char *dest, const char *n,
               struct bdev_specs *specs)
 {
        char *delta;
@@ -378,7 +378,7 @@ int ovl_create(struct bdev *bdev, const char *dest, const char *n,
        return 0;
 }
 
-int ovl_destroy(struct bdev *orig)
+int ovl_destroy(struct lxc_storage *orig)
 {
        bool ovl;
        char *upper = orig->src;
@@ -411,7 +411,7 @@ bool ovl_detect(const char *path)
        return false;
 }
 
-int ovl_mount(struct bdev *bdev)
+int ovl_mount(struct lxc_storage *bdev)
 {
        char *tmp, *options, *dup, *lower, *upper;
        char *options_work, *work, *lastslash;
@@ -586,7 +586,7 @@ int ovl_mount(struct bdev *bdev)
        return ret;
 }
 
-int ovl_umount(struct bdev *bdev)
+int ovl_umount(struct lxc_storage *bdev)
 {
        int ret;
 
@@ -878,7 +878,7 @@ static char *ovl_detect_name(void)
        return v;
 }
 
-static int ovl_do_rsync(struct bdev *orig, struct bdev *new,
+static int ovl_do_rsync(struct lxc_storage *orig, struct lxc_storage *new,
                        struct lxc_conf *conf)
 {
        int ret = -1;
index bc1edc792314c26389b99c00459b4639b8498737..c2ee7bb25d5c96743981c28222e0e6bd4defd3bd 100644 (file)
 #include <mntent.h>
 #endif
 
-/* defined in bdev.h */
-struct bdev;
+struct lxc_storage;
 
-/* defined in lxccontainer.h */
 struct bdev_specs;
 
-/* defined conf.h */
 struct lxc_conf;
 
-/* defined in conf.h */
 struct lxc_rootfs;
 
-/*
- * Functions associated with an overlay bdev struct.
- */
-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);
-int ovl_create(struct bdev *bdev, const char *dest, const char *n,
-              struct bdev_specs *specs);
-int ovl_destroy(struct bdev *orig);
-bool ovl_detect(const char *path);
-int ovl_mount(struct bdev *bdev);
-int ovl_umount(struct bdev *bdev);
+extern int ovl_clonepaths(struct lxc_storage *orig, struct lxc_storage *new,
+                         const char *oldname, const char *cname,
+                         const char *oldpath, const char *lxcpath, int snap,
+                         uint64_t newsize, struct lxc_conf *conf);
+extern int ovl_create(struct lxc_storage *bdev, const char *dest, const char *n,
+                     struct bdev_specs *specs);
+extern int ovl_destroy(struct lxc_storage *orig);
+extern bool ovl_detect(const char *path);
+extern int ovl_mount(struct lxc_storage *bdev);
+extern int ovl_umount(struct lxc_storage *bdev);
 
-/*
- * To be called from lxcapi_clone() in lxccontainer.c: When we clone a container
+/* To be called from lxcapi_clone() in lxccontainer.c: When we clone a container
  * with overlay lxc.mount.entry entries we need to update absolute paths for
  * upper- and workdir. This update is done in two locations:
  * lxc_conf->unexpanded_config and lxc_conf->mount_list. Both updates are done
  * independent of each other since lxc_conf->mountlist may container more mount
  * entries (e.g. from other included files) than lxc_conf->unexpanded_config .
  */
-int ovl_update_abs_paths(struct lxc_conf *lxc_conf, const char *lxc_path,
-                        const char *lxc_name, const char *newpath,
-                        const char *newname);
+extern int ovl_update_abs_paths(struct lxc_conf *lxc_conf, const char *lxc_path,
+                               const char *lxc_name, const char *newpath,
+                               const char *newname);
 
-/*
- * To be called from functions in lxccontainer.c: Get lower directory for
+/* To be called from functions in lxccontainer.c: Get lower directory for
  * overlay rootfs.
  */
-char *ovl_get_lower(const char *rootfs_path);
+extern char *ovl_get_lower(const char *rootfs_path);
 
-/*
- * Get rootfs path for overlay backed containers. Allocated memory must be freed
+/* Get rootfs path for overlay backed containers. Allocated memory must be freed
  * by caller.
  */
-char *ovl_get_rootfs(const char *rootfs_path, size_t *rootfslen);
+extern char *ovl_get_rootfs(const char *rootfs_path, size_t *rootfslen);
 
-/*
- * Create upper- and workdirs for overlay mounts.
+/* Create upper- and workdirs for overlay mounts.
  */
-int ovl_mkdir(const struct mntent *mntent, const struct lxc_rootfs *rootfs,
-             const char *lxc_name, const char *lxc_path);
+extern int ovl_mkdir(const struct mntent *mntent,
+                    const struct lxc_rootfs *rootfs, const char *lxc_name,
+                    const char *lxc_path);
 
 #endif /* __LXC_OVERLAY_H */
index 03e28d1ec6ac8a1e85b2be5c400149222593bcba..e64e80d3159371a4aca3405c23d4730f7293270f 100644 (file)
@@ -34,7 +34,7 @@
 #include "storage_utils.h"
 #include "utils.h"
 
-lxc_log_define(lxcrbd, lxc);
+lxc_log_define(rbd, lxc);
 
 struct rbd_args {
        const char *osd_pool_name;
@@ -80,15 +80,16 @@ int rbd_delete_wrapper(void *data)
        return -1;
 }
 
-int rbd_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)
+int rbd_clonepaths(struct lxc_storage *orig, struct lxc_storage *new,
+                  const char *oldname, const char *cname, const char *oldpath,
+                  const char *lxcpath, int snap, uint64_t newsize,
+                  struct lxc_conf *conf)
 {
        ERROR("rbd clonepaths not implemented");
        return -1;
 }
 
-int rbd_create(struct bdev *bdev, const char *dest, const char *n,
+int rbd_create(struct lxc_storage *bdev, const char *dest, const char *n,
               struct bdev_specs *specs)
 {
        const char *rbdpool, *fstype;
@@ -185,7 +186,7 @@ int rbd_create(struct bdev *bdev, const char *dest, const char *n,
        return 0;
 }
 
-int rbd_destroy(struct bdev *orig)
+int rbd_destroy(struct lxc_storage *orig)
 {
        int ret;
        char *src;
@@ -230,7 +231,7 @@ bool rbd_detect(const char *path)
        return false;
 }
 
-int rbd_mount(struct bdev *bdev)
+int rbd_mount(struct lxc_storage *bdev)
 {
        char *src;
 
@@ -252,7 +253,7 @@ int rbd_mount(struct bdev *bdev)
        return mount_unknown_fs(src, bdev->dest, bdev->mntopts);
 }
 
-int rbd_umount(struct bdev *bdev)
+int rbd_umount(struct lxc_storage *bdev)
 {
        if (strcmp(bdev->type, "rbd"))
                return -22;
index 731fc0a1b151944c7147f9323b4c21644b0073c8..9e6e57c3a45167a36fcddd47ba0bc9921cc052fe 100644 (file)
 #include <stdbool.h>
 #include <stdint.h>
 
-/* defined in bdev.h */
-struct bdev;
+struct lxc_storage;
 
-/* defined in lxccontainer.h */
 struct bdev_specs;
 
-/* defined conf.h */
 struct lxc_conf;
 
-/*
- * Functions associated with an rdb bdev struct.
- */
-int rbd_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);
-int rbd_create(struct bdev *bdev, const char *dest, const char *n,
-               struct bdev_specs *specs);
-int rbd_destroy(struct bdev *orig);
-bool rbd_detect(const char *path);
-int rbd_mount(struct bdev *bdev);
-int rbd_umount(struct bdev *bdev);
+extern int rbd_clonepaths(struct lxc_storage *orig, struct lxc_storage *new,
+                         const char *oldname, const char *cname,
+                         const char *oldpath, const char *lxcpath, int snap,
+                         uint64_t newsize, struct lxc_conf *conf);
+extern int rbd_create(struct lxc_storage *bdev, const char *dest, const char *n,
+                     struct bdev_specs *specs);
+extern int rbd_destroy(struct lxc_storage *orig);
+extern bool rbd_detect(const char *path);
+extern int rbd_mount(struct lxc_storage *bdev);
+extern int rbd_umount(struct lxc_storage *bdev);
 
 #endif /* __LXC_RDB_H */
index a3b0dd709849e03defa138425ec506e63029581d..7fbd0a774836e2050085ea6749902d5ef9d28a21 100644 (file)
@@ -37,7 +37,7 @@
 #include "storage.h"
 #include "utils.h"
 
-lxc_log_define(lxcrsync, lxc);
+lxc_log_define(rsync, lxc);
 
 /* the bulk of this needs to become a common helper */
 int do_rsync(const char *src, const char *dest)
@@ -93,8 +93,7 @@ int rsync_delta_wrapper(void *data)
 
 int rsync_rootfs(struct rsync_data *data)
 {
-       struct bdev *orig = data->orig,
-                   *new = data->new;
+       struct lxc_storage *orig = data->orig, *new = data->new;
 
        if (unshare(CLONE_NEWNS) < 0) {
                SYSERROR("unshare CLONE_NEWNS");
@@ -172,7 +171,7 @@ int lxc_rsync_exec(const char *src, const char *dest)
 int lxc_rsync(struct rsync_data *data)
 {
        int ret;
-       struct bdev *orig = data->orig, *new = data->new;
+       struct lxc_storage *orig = data->orig, *new = data->new;
        char *dest, *src;
 
        ret = unshare(CLONE_NEWNS);
index 81cac1bd002551b2579f506ff6de83820051b0bc..430b0220cccef0fdb383de12c9c71c15a9599f07 100644 (file)
@@ -28,8 +28,8 @@
 #include <stdio.h>
 
 struct rsync_data {
-       struct bdev *orig;
-       struct bdev *new;
+       struct lxc_storage *orig;
+       struct lxc_storage *new;
 };
 
 struct rsync_data_char {
index 609ff52fd096191066e5eda7c0c0d0bbca52420f..ac3ead9d0ce7a7415e57f5611d41a2df7bdbc02e 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-/*
- * this is all just a first shot for experiment.  If we go this route, much
- * should change.  bdev should be a directory with per-bdev file.  Things which
- * I'm doing by calling out to userspace should sometimes be done through
- * libraries like liblvm2
- */
-
 #define _GNU_SOURCE
 #include <dirent.h>
 #include <errno.h>
@@ -75,7 +68,7 @@
 lxc_log_define(storage, lxc);
 
 /* aufs */
-static const struct bdev_ops aufs_ops = {
+static const struct lxc_storage_ops aufs_ops = {
     .detect = &aufs_detect,
     .mount = &aufs_mount,
     .umount = &aufs_umount,
@@ -89,7 +82,7 @@ static const struct bdev_ops aufs_ops = {
 };
 
 /* btrfs */
-static const struct bdev_ops btrfs_ops = {
+static const struct lxc_storage_ops btrfs_ops = {
     .detect = &btrfs_detect,
     .mount = &btrfs_mount,
     .umount = &btrfs_umount,
@@ -103,7 +96,7 @@ static const struct bdev_ops btrfs_ops = {
 };
 
 /* dir */
-static const struct bdev_ops dir_ops = {
+static const struct lxc_storage_ops dir_ops = {
     .detect = &dir_detect,
     .mount = &dir_mount,
     .umount = &dir_umount,
@@ -117,7 +110,7 @@ static const struct bdev_ops dir_ops = {
 };
 
 /* loop */
-static const struct bdev_ops loop_ops = {
+static const struct lxc_storage_ops loop_ops = {
     .detect = &loop_detect,
     .mount = &loop_mount,
     .umount = &loop_umount,
@@ -131,7 +124,7 @@ static const struct bdev_ops loop_ops = {
 };
 
 /* lvm */
-static const struct bdev_ops lvm_ops = {
+static const struct lxc_storage_ops lvm_ops = {
     .detect = &lvm_detect,
     .mount = &lvm_mount,
     .umount = &lvm_umount,
@@ -145,7 +138,7 @@ static const struct bdev_ops lvm_ops = {
 };
 
 /* nbd */
-const struct bdev_ops nbd_ops = {
+const struct lxc_storage_ops nbd_ops = {
     .detect = &nbd_detect,
     .mount = &nbd_mount,
     .umount = &nbd_umount,
@@ -159,7 +152,7 @@ const struct bdev_ops nbd_ops = {
 };
 
 /* overlay */
-static const struct bdev_ops ovl_ops = {
+static const struct lxc_storage_ops ovl_ops = {
     .detect = &ovl_detect,
     .mount = &ovl_mount,
     .umount = &ovl_umount,
@@ -173,7 +166,7 @@ static const struct bdev_ops ovl_ops = {
 };
 
 /* rbd */
-static const struct bdev_ops rbd_ops = {
+static const struct lxc_storage_ops rbd_ops = {
     .detect = &rbd_detect,
     .mount = &rbd_mount,
     .umount = &rbd_umount,
@@ -187,7 +180,7 @@ static const struct bdev_ops rbd_ops = {
 };
 
 /* zfs */
-static const struct bdev_ops zfs_ops = {
+static const struct lxc_storage_ops zfs_ops = {
     .detect = &zfs_detect,
     .mount = &zfs_mount,
     .umount = &zfs_umount,
@@ -200,12 +193,12 @@ static const struct bdev_ops zfs_ops = {
     .can_backup = true,
 };
 
-struct bdev_type {
+struct lxc_storage_type {
        const char *name;
-       const struct bdev_ops *ops;
+       const struct lxc_storage_ops *ops;
 };
 
-static const struct bdev_type bdevs[] = {
+static const struct lxc_storage_type bdevs[] = {
        { .name = "dir",       .ops = &dir_ops,   },
        { .name = "zfs",       .ops = &zfs_ops,   },
        { .name = "lvm",       .ops = &lvm_ops,   },
@@ -218,9 +211,9 @@ static const struct bdev_type bdevs[] = {
        { .name = "nbd",       .ops = &nbd_ops,   },
 };
 
-static const size_t numbdevs = sizeof(bdevs) / sizeof(struct bdev_type);
+static const size_t numbdevs = sizeof(bdevs) / sizeof(struct lxc_storage_type);
 
-static const struct bdev_type *get_bdev_by_name(const char *name)
+static const struct lxc_storage_type *get_storage_by_name(const char *name)
 {
        size_t i, cmplen;
 
@@ -239,12 +232,13 @@ static const struct bdev_type *get_bdev_by_name(const char *name)
        return &bdevs[i];
 }
 
-const struct bdev_type *bdev_query(struct lxc_conf *conf, const char *src)
+const struct lxc_storage_type *storage_query(struct lxc_conf *conf,
+                                            const char *src)
 {
        size_t i;
-       const struct bdev_type *bdev;
+       const struct lxc_storage_type *bdev;
 
-       bdev = get_bdev_by_name(src);
+       bdev = get_storage_by_name(src);
        if (bdev)
                return bdev;
 
@@ -259,10 +253,10 @@ const struct bdev_type *bdev_query(struct lxc_conf *conf, const char *src)
        return &bdevs[i];
 }
 
-struct bdev *bdev_get(const char *type)
+struct lxc_storage *storage_get(const char *type)
 {
        size_t i;
-       struct bdev *bdev;
+       struct lxc_storage *bdev;
 
        for (i = 0; i < numbdevs; i++) {
                if (strcmp(bdevs[i].name, type) == 0)
@@ -272,60 +266,61 @@ struct bdev *bdev_get(const char *type)
        if (i == numbdevs)
                return NULL;
 
-       bdev = malloc(sizeof(struct bdev));
+       bdev = malloc(sizeof(struct lxc_storage));
        if (!bdev)
                return NULL;
 
-       memset(bdev, 0, sizeof(struct bdev));
+       memset(bdev, 0, sizeof(struct lxc_storage));
        bdev->ops = bdevs[i].ops;
        bdev->type = bdevs[i].name;
 
        return bdev;
 }
 
-static struct bdev *do_bdev_create(const char *dest, const char *type,
-                                  const char *cname, struct bdev_specs *specs)
+static struct lxc_storage *do_storage_create(const char *dest, const char *type,
+                                            const char *cname,
+                                            struct bdev_specs *specs)
 {
 
-       struct bdev *bdev;
+       struct lxc_storage *bdev;
 
        if (!type)
                type = "dir";
 
-       bdev = bdev_get(type);
+       bdev = storage_get(type);
        if (!bdev)
                return NULL;
 
        if (bdev->ops->create(bdev, dest, cname, specs) < 0) {
-               bdev_put(bdev);
+               storage_put(bdev);
                return NULL;
        }
 
        return bdev;
 }
 
-bool bdev_can_backup(struct lxc_conf *conf)
+bool storage_can_backup(struct lxc_conf *conf)
 {
-       struct bdev *bdev = bdev_init(conf, NULL, NULL, NULL);
+       struct lxc_storage *bdev = storage_init(conf, NULL, NULL, NULL);
        bool ret;
 
        if (!bdev)
                return false;
 
        ret = bdev->ops->can_backup;
-       bdev_put(bdev);
+       storage_put(bdev);
        return ret;
 }
 
-/*
- * If we're not snaphotting, then bdev_copy becomes a simple case of mount
+/* If we're not snaphotting, then storage_copy becomes a simple case of mount
  * the original, mount the new, and rsync the contents.
  */
-struct bdev *bdev_copy(struct lxc_container *c0, const char *cname,
-                      const char *lxcpath, const char *bdevtype, int flags,
-                      const char *bdevdata, uint64_t newsize, int *needs_rdep)
+struct lxc_storage *storage_copy(struct lxc_container *c0, const char *cname,
+                                const char *lxcpath, const char *bdevtype,
+                                int flags, const char *bdevdata,
+                                uint64_t newsize, int *needs_rdep)
 {
-       struct bdev *orig, *new;
+       struct lxc_storage *orig, *new;
        int ret;
        char *src_no_prefix;
        bool snap = flags & LXC_CLONE_SNAPSHOT;
@@ -346,7 +341,7 @@ struct bdev *bdev_copy(struct lxc_container *c0, const char *cname,
                return NULL;
        }
 
-       orig = bdev_init(c0->lxc_conf, src, NULL, NULL);
+       orig = storage_init(c0->lxc_conf, src, NULL, NULL);
        if (!orig) {
                ERROR("Failed to detect storage driver for \"%s\"", src);
                return NULL;
@@ -361,14 +356,14 @@ struct bdev *bdev_copy(struct lxc_container *c0, const char *cname,
                orig->dest = malloc(len);
                if (!orig->dest) {
                        ERROR("Failed to allocate memory");
-                       bdev_put(orig);
+                       storage_put(orig);
                        return NULL;
                }
 
                ret = snprintf(orig->dest, len, "%s/%s/rootfs", oldpath, oldname);
                if (ret < 0 || (size_t)ret >= len) {
                        ERROR("Failed to create string");
-                       bdev_put(orig);
+                       storage_put(orig);
                        return NULL;
                }
 
@@ -394,7 +389,7 @@ struct bdev *bdev_copy(struct lxc_container *c0, const char *cname,
        if (am_unpriv() && !unpriv_snap_allowed(orig, bdevtype, snap, maybe_snap)) {
                ERROR("Unsupported snapshot type \"%s\" for unprivileged users",
                      bdevtype ? bdevtype : "(null)");
-               bdev_put(orig);
+               storage_put(orig);
                return NULL;
        }
 
@@ -415,11 +410,11 @@ struct bdev *bdev_copy(struct lxc_container *c0, const char *cname,
                bdevtype = orig->type;
 
        /* get new bdev type */
-       new = bdev_get(bdevtype);
+       new = storage_get(bdevtype);
        if (!new) {
                ERROR("Failed to initialize \"%s\" storage driver",
                      bdevtype ? bdevtype : orig->type);
-               bdev_put(orig);
+               storage_put(orig);
                return NULL;
        }
        TRACE("Initialized \"%s\" storage driver", new->type);
@@ -508,84 +503,83 @@ struct bdev *bdev_copy(struct lxc_container *c0, const char *cname,
                }
        }
 
-       bdev_put(orig);
+       storage_put(orig);
        return new;
 
 err:
-       bdev_put(orig);
-       bdev_put(new);
+       storage_put(orig);
+       storage_put(new);
        return NULL;
 }
 
-/*
- * bdev_create:
- * Create a backing store for a container.
+/* Create a backing store for a container.
  * If successful, return a struct bdev *, with the bdev mounted and ready
  * for use.  Before completing, the caller will need to call the
- * umount operation and bdev_put().
+ * umount operation and storage_put().
  * @dest: the mountpoint (i.e. /var/lib/lxc/$name/rootfs)
  * @type: the bdevtype (dir, btrfs, zfs, rbd, etc)
  * @cname: the container name
  * @specs: details about the backing store to create, like fstype
  */
-struct bdev *bdev_create(const char *dest, const char *type, const char *cname,
-                        struct bdev_specs *specs)
+struct lxc_storage *storage_create(const char *dest, const char *type,
+                                  const char *cname, struct bdev_specs *specs)
 {
-       struct bdev *bdev;
+       struct lxc_storage *bdev;
        char *best_options[] = {"btrfs", "zfs", "lvm", "dir", "rbd", NULL};
 
        if (!type)
-               return do_bdev_create(dest, "dir", cname, specs);
+               return do_storage_create(dest, "dir", cname, specs);
 
        if (strcmp(type, "best") == 0) {
                int i;
-               // try for the best backing store type, according to our
-               // opinionated preferences
+               /* Try for the best backing store type, according to our
+                * opinionated preferences.
+                */
                for (i = 0; best_options[i]; i++) {
-                       if ((bdev = do_bdev_create(dest, best_options[i], cname,
-                                                  specs)))
+                       bdev = do_storage_create(dest, best_options[i], cname,
+                                                specs);
+                       if (bdev)
                                return bdev;
                }
 
-               return NULL; // 'dir' should never fail, so this shouldn't
-                            // happen
+               return NULL;
        }
 
-       // -B lvm,dir
+       /* -B lvm,dir */
        if (strchr(type, ',') != NULL) {
                char *dup = alloca(strlen(type) + 1), *saveptr = NULL, *token;
                strcpy(dup, type);
                for (token = strtok_r(dup, ",", &saveptr); token;
                     token = strtok_r(NULL, ",", &saveptr)) {
-                       if ((bdev = do_bdev_create(dest, token, cname, specs)))
+                       if ((bdev = do_storage_create(dest, token, cname, specs)))
                                return bdev;
                }
        }
 
-       return do_bdev_create(dest, type, cname, specs);
+       return do_storage_create(dest, type, cname, specs);
 }
 
-bool bdev_destroy(struct lxc_conf *conf)
+bool storage_destroy(struct lxc_conf *conf)
 {
-       struct bdev *r;
+       struct lxc_storage *r;
        bool ret = false;
 
-       r = bdev_init(conf, conf->rootfs.path, conf->rootfs.mount, NULL);
+       r = storage_init(conf, conf->rootfs.path, conf->rootfs.mount, NULL);
        if (!r)
                return ret;
 
        if (r->ops->destroy(r) == 0)
                ret = true;
-       bdev_put(r);
 
+       storage_put(r);
        return ret;
 }
 
-struct bdev *bdev_init(struct lxc_conf *conf, const char *src, const char *dst,
-                      const char *mntopts)
+struct lxc_storage *storage_init(struct lxc_conf *conf, const char *src,
+                                const char *dst, const char *mntopts)
 {
-       struct bdev *bdev;
-       const struct bdev_type *q;
+       struct lxc_storage *bdev;
+       const struct lxc_storage_type *q;
 
        if (!src)
                src = conf->rootfs.path;
@@ -593,15 +587,15 @@ struct bdev *bdev_init(struct lxc_conf *conf, const char *src, const char *dst,
        if (!src)
                return NULL;
 
-       q = bdev_query(conf, src);
+       q = storage_query(conf, src);
        if (!q)
                return NULL;
 
-       bdev = malloc(sizeof(struct bdev));
+       bdev = malloc(sizeof(struct lxc_storage));
        if (!bdev)
                return NULL;
 
-       memset(bdev, 0, sizeof(struct bdev));
+       memset(bdev, 0, sizeof(struct lxc_storage));
        bdev->ops = q->ops;
        bdev->type = q->name;
        if (mntopts)
@@ -616,19 +610,23 @@ struct bdev *bdev_init(struct lxc_conf *conf, const char *src, const char *dst,
        return bdev;
 }
 
-bool bdev_is_dir(struct lxc_conf *conf, const char *path)
+bool storage_is_dir(struct lxc_conf *conf, const char *path)
 {
-       struct bdev *orig = bdev_init(conf, path, NULL, NULL);
-       bool ret = false;
+       struct lxc_storage *orig;
+       bool bret = false;
+
+       orig = storage_init(conf, path, NULL, NULL);
        if (!orig)
-               return ret;
+               return bret;
+
        if (strcmp(orig->type, "dir") == 0)
-               ret = true;
-       bdev_put(orig);
-       return ret;
+               bret = true;
+
+       storage_put(orig);
+       return bret;
 }
 
-void bdev_put(struct bdev *bdev)
+void storage_put(struct lxc_storage *bdev)
 {
        free(bdev->mntopts);
        free(bdev->src);
@@ -638,7 +636,7 @@ void bdev_put(struct bdev *bdev)
 
 bool rootfs_is_blockdev(struct lxc_conf *conf)
 {
-       const struct bdev_type *q;
+       const struct lxc_storage_type *q;
        struct stat st;
        int ret;
 
@@ -650,7 +648,7 @@ bool rootfs_is_blockdev(struct lxc_conf *conf)
        if (ret == 0 && S_ISBLK(st.st_mode))
                return true;
 
-       q = bdev_query(conf, conf->rootfs.path);
+       q = storage_query(conf, conf->rootfs.path);
        if (!q)
                return false;
 
index 36cf0e6467b1ae9bbcc4f259a69d2d8c002500dd..8421808a9e69a36b7ada96b4530364bf315ef18a 100644 (file)
 #define DEFAULT_FS_SIZE 1073741824
 #define DEFAULT_FSTYPE "ext3"
 
-struct bdev;
+struct lxc_storage;
 
-struct bdev_ops {
+struct lxc_storage_ops {
        /* detect whether path is of this bdev type */
        bool (*detect)(const char *path);
        // mount requires src and dest to be set.
-       int (*mount)(struct bdev *bdev);
-       int (*umount)(struct bdev *bdev);
-       int (*destroy)(struct bdev *bdev);
-       int (*create)(struct bdev *bdev, const char *dest, const char *n,
+       int (*mount)(struct lxc_storage *bdev);
+       int (*umount)(struct lxc_storage *bdev);
+       int (*destroy)(struct lxc_storage *bdev);
+       int (*create)(struct lxc_storage *bdev, const char *dest, const char *n,
                      struct bdev_specs *specs);
        /* given original mount, rename the paths for cloned container */
-       int (*clone_paths)(struct bdev *orig, struct bdev *new,
+       int (*clone_paths)(struct lxc_storage *orig, struct lxc_storage *new,
                           const char *oldname, const char *cname,
                           const char *oldpath, const char *lxcpath, int snap,
                           uint64_t newsize, struct lxc_conf *conf);
-       bool (*copy)(struct lxc_conf *conf, struct bdev *orig, struct bdev *new,
-                    uint64_t newsize);
-       bool (*snapshot)(struct lxc_conf *conf, struct bdev *orig,
-                        struct bdev *new, uint64_t newsize);
+       bool (*copy)(struct lxc_conf *conf, struct lxc_storage *orig,
+                    struct lxc_storage *new, uint64_t newsize);
+       bool (*snapshot)(struct lxc_conf *conf, struct lxc_storage *orig,
+                        struct lxc_storage *new, uint64_t newsize);
        bool can_snapshot;
        bool can_backup;
 };
 
-/*
- * When lxc-start is mounting a rootfs, then src will be the "lxc.rootfs" value,
- * dest will be mount dir (i.e. $libdir/lxc)  When clone or create is doing so,
- * then dest will be $lxcpath/$lxcname/rootfs, since we may need to rsync from
- * one to the other.
- * data is so far unused.
+/* When lxc is mounting a rootfs, then src will be the "lxc.rootfs.path" value,
+ * dest will be the mount dir (i.e. "<libdir>/lxc")  When clone or create is
+ * doing so, then dest will be "<lxcpath>/<lxcname>/rootfs", since we may need
+ * to rsync from one to the other.
  */
-struct bdev {
-       const struct bdev_ops *ops;
+struct lxc_storage {
+       const struct lxc_storage_ops *ops;
        const char *type;
        char *src;
        char *dest;
@@ -101,33 +99,35 @@ struct bdev {
        int nbd_idx;
 };
 
-bool bdev_is_dir(struct lxc_conf *conf, const char *path);
-bool bdev_can_backup(struct lxc_conf *conf);
+extern bool storage_is_dir(struct lxc_conf *conf, const char *path);
+extern bool storage_can_backup(struct lxc_conf *conf);
 
-/*
- * Instantiate a bdev object. The src is used to determine which blockdev type
- * this should be. The dst and data are optional, and will be used in case of
- * mount/umount.
+/* Instantiate a lxc_storage object. The src is used to determine which blockdev
+ * type this should be. The dst and data are optional, and will be used in case
+ * of mount/umount.
  *
- * Optionally, src can be 'dir:/var/lib/lxc/c1' or 'lvm:/dev/lxc/c1'.  For
- * other backing stores, this will allow additional options. In particular,
- * "overlayfs:/var/lib/lxc/canonical/rootfs:/var/lib/lxc/c1/delta" will mean
- * use /var/lib/lxc/canonical/rootfs as lower dir, and /var/lib/lxc/c1/delta
- * as the upper, writeable layer.
+ * The source will be "dir:/var/lib/lxc/c1" or "lvm:/dev/lxc/c1". For other
+ * backing stores, this will allow additional options. In particular,
+ * "overlayfs:/var/lib/lxc/canonical/rootfs:/var/lib/lxc/c1/delta" will mean use
+ * /var/lib/lxc/canonical/rootfs as lower dir, and /var/lib/lxc/c1/delta as the
+ * upper, writeable layer.
  */
-struct bdev *bdev_init(struct lxc_conf *conf, const char *src, const char *dst,
-                      const char *data);
-
-struct bdev *bdev_copy(struct lxc_container *c0, const char *cname,
-                      const char *lxcpath, const char *bdevtype, int flags,
-                      const char *bdevdata, uint64_t newsize, int *needs_rdep);
-struct bdev *bdev_create(const char *dest, const char *type, const char *cname,
-                        struct bdev_specs *specs);
-void bdev_put(struct bdev *bdev);
-bool bdev_destroy(struct lxc_conf *conf);
+extern struct lxc_storage *storage_init(struct lxc_conf *conf, const char *src,
+                                       const char *dst, const char *data);
+
+extern struct lxc_storage *storage_copy(struct lxc_container *c0,
+                                       const char *cname, const char *lxcpath,
+                                       const char *bdevtype, int flags,
+                                       const char *bdevdata, uint64_t newsize,
+                                       int *needs_rdep);
+extern struct lxc_storage *storage_create(const char *dest, const char *type,
+                                         const char *cname,
+                                         struct bdev_specs *specs);
+extern void storage_put(struct lxc_storage *bdev);
+extern bool storage_destroy(struct lxc_conf *conf);
 
 /* callback function to be used with userns_exec_1() */
-int bdev_destroy_wrapper(void *data);
+extern int storage_destroy_wrapper(void *data);
 extern bool rootfs_is_blockdev(struct lxc_conf *conf);
 extern char *lxc_storage_get_path(char *src, const char *prefix);
 
index 8b92725bb501cd383a1960a07cca14e9f6df6ad5..77d42795161d37ebfae3501d8b2a46a67be5364c 100644 (file)
@@ -126,7 +126,7 @@ bool attach_block_device(struct lxc_conf *conf)
 /*
  * return block size of dev->src in units of bytes
  */
-int blk_getsize(struct bdev *bdev, uint64_t *size)
+int blk_getsize(struct lxc_storage *bdev, uint64_t *size)
 {
        int fd, ret;
        char *src;
@@ -148,14 +148,14 @@ void detach_block_device(struct lxc_conf *conf)
 }
 
 /*
- * Given a bdev (presumably blockdev-based), detect the fstype
+ * Given a lxc_storage (presumably blockdev-based), detect the fstype
  * by trying mounting (in a private mntns) it.
- * @bdev: bdev to investigate
+ * @lxc_storage: bdev to investigate
  * @type: preallocated char* in which to write the fstype
  * @len: length of passed in char*
  * Returns length of fstype, of -1 on error
  */
-int detect_fs(struct bdev *bdev, char *type, int len)
+int detect_fs(struct lxc_storage *bdev, char *type, int len)
 {
        int p[2], ret;
        size_t linelen;
@@ -280,7 +280,7 @@ int do_mkfs_exec_wrapper(void *args)
  * This will return 1 for physical disks, qemu-nbd, loop, etc right now only lvm
  * is a block device.
  */
-int is_blktype(struct bdev *b)
+int is_blktype(struct lxc_storage *b)
 {
        if (strcmp(b->type, "lvm") == 0)
                return 1;
@@ -406,7 +406,7 @@ char *linkderef(char *path, char *dest)
 /*
  * is an unprivileged user allowed to make this kind of snapshot
  */
-bool unpriv_snap_allowed(struct bdev *b, const char *t, bool snap,
+bool unpriv_snap_allowed(struct lxc_storage *b, const char *t, bool snap,
                         bool maybesnap)
 {
        if (!t) {
@@ -437,7 +437,7 @@ bool unpriv_snap_allowed(struct bdev *b, const char *t, bool snap,
        return false;
 }
 
-bool is_valid_bdev_type(const char *type)
+bool is_valid_storage_type(const char *type)
 {
        if (strcmp(type, "dir") == 0 ||
            strcmp(type, "btrfs") == 0 ||
@@ -453,7 +453,7 @@ bool is_valid_bdev_type(const char *type)
        return false;
 }
 
-int bdev_destroy_wrapper(void *data)
+int storage_destroy_wrapper(void *data)
 {
        struct lxc_conf *conf = data;
 
@@ -470,7 +470,7 @@ int bdev_destroy_wrapper(void *data)
                return -1;
        }
 
-       if (!bdev_destroy(conf))
+       if (!storage_destroy(conf))
                return -1;
 
        return 0;
index cfd6aa47cad4bd8c7d20246f7c04f96aad357f5f..6f53d6f7390cb0df031ba9cd5be841f352a95f8a 100644 (file)
 
 #include "conf.h"
 
-struct bdev;
+struct lxc_storage;
 struct lxc_conf;
 
 extern char *dir_new_path(char *src, const char *oldname, const char *name,
                          const char *oldpath, const char *lxcpath);
 extern bool attach_block_device(struct lxc_conf *conf);
 extern void detach_block_device(struct lxc_conf *conf);
-extern int blk_getsize(struct bdev *bdev, uint64_t *size);
-extern int detect_fs(struct bdev *bdev, char *type, int len);
+extern int blk_getsize(struct lxc_storage *bdev, uint64_t *size);
+extern int detect_fs(struct lxc_storage *bdev, char *type, int len);
 extern int do_mkfs_exec_wrapper(void *args);
-extern int is_blktype(struct bdev *b);
+extern int is_blktype(struct lxc_storage *b);
 extern int mount_unknown_fs(const char *rootfs, const char *target,
                            const char *options);
 extern int find_fstype_cb(char *buffer, void *data);
 extern char *linkderef(char *path, char *dest);
-extern bool unpriv_snap_allowed(struct bdev *b, const char *t, bool snap,
+extern bool unpriv_snap_allowed(struct lxc_storage *b, const char *t, bool snap,
                                bool maybesnap);
-extern bool is_valid_bdev_type(const char *type);
-extern int bdev_destroy_wrapper(void *data);
+extern bool is_valid_storage_type(const char *type);
+extern int storage_destroy_wrapper(void *data);
 
-#endif // __LXC_STORAGE_UTILS_H
+#endif /* __LXC_STORAGE_UTILS_H */
index 014899b5ee9527b157b967f969d36cd0d6c6e9f4..a9f560fc3d17a9b1544e57b3520579c59e2399d2 100644 (file)
@@ -38,7 +38,7 @@
 #include "utils.h"
 #include "zfs.h"
 
-lxc_log_define(lxczfs, lxc);
+lxc_log_define(zfs, lxc);
 
 struct zfs_args {
        const char *dataset;
@@ -176,7 +176,7 @@ bool zfs_detect(const char *path)
        return true;
 }
 
-int zfs_mount(struct bdev *bdev)
+int zfs_mount(struct lxc_storage *bdev)
 {
        int ret;
        size_t oldlen, newlen, totallen;
@@ -261,7 +261,7 @@ int zfs_mount(struct bdev *bdev)
        return 0;
 }
 
-int zfs_umount(struct bdev *bdev)
+int zfs_umount(struct lxc_storage *bdev)
 {
        int ret;
 
@@ -280,8 +280,8 @@ int zfs_umount(struct bdev *bdev)
        return ret;
 }
 
-bool zfs_copy(struct lxc_conf *conf, struct bdev *orig, struct bdev *new,
-             uint64_t newsize)
+bool zfs_copy(struct lxc_conf *conf, struct lxc_storage *orig,
+             struct lxc_storage *new, uint64_t newsize)
 {
        int ret;
        char cmd_output[MAXPATHLEN], option[MAXPATHLEN];
@@ -337,8 +337,8 @@ bool zfs_copy(struct lxc_conf *conf, struct bdev *orig, struct bdev *new,
 }
 
 /* create read-only snapshot and create a clone from it */
-bool zfs_snapshot(struct lxc_conf *conf, struct bdev *orig, struct bdev *new,
-                 uint64_t newsize)
+bool zfs_snapshot(struct lxc_conf *conf, struct lxc_storage *orig,
+                 struct lxc_storage *new, uint64_t newsize)
 {
        int ret;
        size_t snapshot_len, len;
@@ -442,9 +442,10 @@ bool zfs_snapshot(struct lxc_conf *conf, struct bdev *orig, struct bdev *new,
        return true;
 }
 
-int zfs_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)
+int zfs_clonepaths(struct lxc_storage *orig, struct lxc_storage *new,
+                  const char *oldname, const char *cname, const char *oldpath,
+                  const char *lxcpath, int snap, uint64_t newsize,
+                  struct lxc_conf *conf)
 {
        char *dataset, *orig_src, *tmp;
        int ret;
@@ -572,7 +573,7 @@ int zfs_clonepaths(struct bdev *orig, struct bdev *new, const char *oldname,
        return 0;
 }
 
-int zfs_destroy(struct bdev *orig)
+int zfs_destroy(struct lxc_storage *orig)
 {
        int ret;
        char *dataset, *src, *tmp;
@@ -700,7 +701,7 @@ int zfs_destroy(struct bdev *orig)
        return ret;
 }
 
-int zfs_create(struct bdev *bdev, const char *dest, const char *n,
+int zfs_create(struct lxc_storage *bdev, const char *dest, const char *n,
               struct bdev_specs *specs)
 {
        const char *zfsroot;
index dbc769041b264fb96c8781f474174e59f5df460b..abfc0129eb7feb0a6493f09a79933cd854dea84f 100644 (file)
 #include <stdio.h>
 #include <stdint.h>
 
-struct bdev;
+struct lxc_storage;
 
 struct bdev_specs;
 
 struct lxc_conf;
 
-extern int zfs_clonepaths(struct bdev *orig, struct bdev *new,
+extern int zfs_clonepaths(struct lxc_storage *orig, struct lxc_storage *new,
                          const char *oldname, const char *cname,
                          const char *oldpath, const char *lxcpath, int snap,
                          uint64_t newsize, struct lxc_conf *conf);
-extern int zfs_create(struct bdev *bdev, const char *dest, const char *n,
+extern int zfs_create(struct lxc_storage *bdev, const char *dest, const char *n,
                      struct bdev_specs *specs);
-extern int zfs_destroy(struct bdev *orig);
+extern int zfs_destroy(struct lxc_storage *orig);
 extern bool zfs_detect(const char *path);
-extern int zfs_mount(struct bdev *bdev);
-extern int zfs_umount(struct bdev *bdev);
+extern int zfs_mount(struct lxc_storage *bdev);
+extern int zfs_umount(struct lxc_storage *bdev);
 
-extern bool zfs_copy(struct lxc_conf *conf, struct bdev *orig, struct bdev *new,
-                    uint64_t newsize);
-extern bool zfs_snapshot(struct lxc_conf *conf, struct bdev *orig,
-                        struct bdev *new, uint64_t newsize);
+extern bool zfs_copy(struct lxc_conf *conf, struct lxc_storage *orig,
+                    struct lxc_storage *new, uint64_t newsize);
+extern bool zfs_snapshot(struct lxc_conf *conf, struct lxc_storage *orig,
+                        struct lxc_storage *new, uint64_t newsize);
 
 #endif /* __LXC_ZFS_H */
index 555731a487af9f02df4b4f825736a4349af42e32..d1486e409d051e5f226f6b463b277329589fcafe 100644 (file)
@@ -251,7 +251,7 @@ int main(int argc, char *argv[])
        // Final check whether the user gave use a valid bdev type.
        if (strcmp(my_args.bdevtype, "best") &&
            strcmp(my_args.bdevtype, "_unset") &&
-           !is_valid_bdev_type(my_args.bdevtype)) {
+           !is_valid_storage_type(my_args.bdevtype)) {
                fprintf(stderr, "%s is not a valid backing storage type.\n", my_args.bdevtype);
                exit(EXIT_FAILURE);
        }