From: Christian Brauner Date: Sat, 29 Jul 2017 15:04:44 +0000 (+0200) Subject: tree-wide: struct bdev -> struct lxc_storage X-Git-Tag: lxc-2.1.0~32^2~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=10bc186195d26e425705eaff84701fb6bee03170;p=thirdparty%2Flxc.git tree-wide: struct bdev -> struct lxc_storage Signed-off-by: Christian Brauner --- diff --git a/src/lxc/conf.c b/src/lxc/conf.c index a54a7c26c..18860f0a4 100644 --- a/src/lxc/conf.c +++ b/src/lxc/conf.c @@ -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, diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c index a0389d617..17039f836 100644 --- a/src/lxc/lxccontainer.c +++ b/src/lxc/lxccontainer.c @@ -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) diff --git a/src/lxc/start.c b/src/lxc/start.c index c2be74606..8551f535f 100644 --- a/src/lxc/start.c +++ b/src/lxc/start.c @@ -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); } diff --git a/src/lxc/storage/aufs.c b/src/lxc/storage/aufs.c index 4efcc8e73..0ba5288e6 100644 --- a/src/lxc/storage/aufs.c +++ b/src/lxc/storage/aufs.c @@ -34,15 +34,16 @@ #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; diff --git a/src/lxc/storage/aufs.h b/src/lxc/storage/aufs.h index a0dcac3eb..dfebbe966 100644 --- a/src/lxc/storage/aufs.h +++ b/src/lxc/storage/aufs.h @@ -34,34 +34,27 @@ #include #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); diff --git a/src/lxc/storage/btrfs.c b/src/lxc/storage/btrfs.c index 189c307ca..18755aa01 100644 --- a/src/lxc/storage/btrfs.c +++ b/src/lxc/storage/btrfs.c @@ -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; diff --git a/src/lxc/storage/btrfs.h b/src/lxc/storage/btrfs.h index d88e1be2c..7d0253994 100644 --- a/src/lxc/storage/btrfs.h +++ b/src/lxc/storage/btrfs.h @@ -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 */ diff --git a/src/lxc/storage/dir.c b/src/lxc/storage/dir.c index bca8cda4a..9a050b227 100644 --- a/src/lxc/storage/dir.c +++ b/src/lxc/storage/dir.c @@ -29,15 +29,15 @@ #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; diff --git a/src/lxc/storage/dir.h b/src/lxc/storage/dir.h index d63c66900..6858e0040 100644 --- a/src/lxc/storage/dir.h +++ b/src/lxc/storage/dir.h @@ -28,26 +28,21 @@ #include #include -/* 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 */ diff --git a/src/lxc/storage/loop.c b/src/lxc/storage/loop.c index 95cf856bc..8ceddc60a 100644 --- a/src/lxc/storage/loop.c +++ b/src/lxc/storage/loop.c @@ -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; diff --git a/src/lxc/storage/loop.h b/src/lxc/storage/loop.h index 9c7baa2a7..a8b1a4185 100644 --- a/src/lxc/storage/loop.h +++ b/src/lxc/storage/loop.h @@ -28,26 +28,21 @@ #include #include -/* 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 */ diff --git a/src/lxc/storage/lvm.c b/src/lxc/storage/lvm.c index 67d83f71c..97fcce0bd 100644 --- a/src/lxc/storage/lvm.c +++ b/src/lxc/storage/lvm.c @@ -44,7 +44,7 @@ #include #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; diff --git a/src/lxc/storage/lvm.h b/src/lxc/storage/lvm.h index a89ca6693..6a82f801a 100644 --- a/src/lxc/storage/lvm.h +++ b/src/lxc/storage/lvm.h @@ -28,34 +28,29 @@ #include #include -/* 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 */ diff --git a/src/lxc/storage/nbd.c b/src/lxc/storage/nbd.c index 2a76143fc..1fff5b60e 100644 --- a/src/lxc/storage/nbd.c +++ b/src/lxc/storage/nbd.c @@ -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; diff --git a/src/lxc/storage/nbd.h b/src/lxc/storage/nbd.h index 52ce8cb05..bd2335947 100644 --- a/src/lxc/storage/nbd.h +++ b/src/lxc/storage/nbd.h @@ -28,31 +28,25 @@ #include #include -/* 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 */ diff --git a/src/lxc/storage/overlay.c b/src/lxc/storage/overlay.c index ec57a6719..7a41c0b85 100644 --- a/src/lxc/storage/overlay.c +++ b/src/lxc/storage/overlay.c @@ -37,19 +37,19 @@ #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, * "//rootfs" to have the created container, while all changes * after starting the container are written to "//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; diff --git a/src/lxc/storage/overlay.h b/src/lxc/storage/overlay.h index bc1edc792..c2ee7bb25 100644 --- a/src/lxc/storage/overlay.h +++ b/src/lxc/storage/overlay.h @@ -36,59 +36,50 @@ #include #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 */ diff --git a/src/lxc/storage/rbd.c b/src/lxc/storage/rbd.c index 03e28d1ec..e64e80d31 100644 --- a/src/lxc/storage/rbd.c +++ b/src/lxc/storage/rbd.c @@ -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; diff --git a/src/lxc/storage/rbd.h b/src/lxc/storage/rbd.h index 731fc0a1b..9e6e57c3a 100644 --- a/src/lxc/storage/rbd.h +++ b/src/lxc/storage/rbd.h @@ -28,26 +28,21 @@ #include #include -/* 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 */ diff --git a/src/lxc/storage/rsync.c b/src/lxc/storage/rsync.c index a3b0dd709..7fbd0a774 100644 --- a/src/lxc/storage/rsync.c +++ b/src/lxc/storage/rsync.c @@ -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); diff --git a/src/lxc/storage/rsync.h b/src/lxc/storage/rsync.h index 81cac1bd0..430b0220c 100644 --- a/src/lxc/storage/rsync.h +++ b/src/lxc/storage/rsync.h @@ -28,8 +28,8 @@ #include struct rsync_data { - struct bdev *orig; - struct bdev *new; + struct lxc_storage *orig; + struct lxc_storage *new; }; struct rsync_data_char { diff --git a/src/lxc/storage/storage.c b/src/lxc/storage/storage.c index 609ff52fd..ac3ead9d0 100644 --- a/src/lxc/storage/storage.c +++ b/src/lxc/storage/storage.c @@ -21,13 +21,6 @@ * 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 #include @@ -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; diff --git a/src/lxc/storage/storage.h b/src/lxc/storage/storage.h index 36cf0e646..8421808a9 100644 --- a/src/lxc/storage/storage.h +++ b/src/lxc/storage/storage.h @@ -57,39 +57,37 @@ #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. "/lxc") When clone or create is + * doing so, then dest will be "//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); diff --git a/src/lxc/storage/storage_utils.c b/src/lxc/storage/storage_utils.c index 8b92725bb..77d427951 100644 --- a/src/lxc/storage/storage_utils.c +++ b/src/lxc/storage/storage_utils.c @@ -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; diff --git a/src/lxc/storage/storage_utils.h b/src/lxc/storage/storage_utils.h index cfd6aa47c..6f53d6f73 100644 --- a/src/lxc/storage/storage_utils.h +++ b/src/lxc/storage/storage_utils.h @@ -31,24 +31,24 @@ #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 */ diff --git a/src/lxc/storage/zfs.c b/src/lxc/storage/zfs.c index 014899b5e..a9f560fc3 100644 --- a/src/lxc/storage/zfs.c +++ b/src/lxc/storage/zfs.c @@ -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; diff --git a/src/lxc/storage/zfs.h b/src/lxc/storage/zfs.h index dbc769041..abfc0129e 100644 --- a/src/lxc/storage/zfs.h +++ b/src/lxc/storage/zfs.h @@ -29,26 +29,26 @@ #include #include -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 */ diff --git a/src/lxc/tools/lxc_create.c b/src/lxc/tools/lxc_create.c index 555731a48..d1486e409 100644 --- a/src/lxc/tools/lxc_create.c +++ b/src/lxc/tools/lxc_create.c @@ -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); }