diff --git a/src/lxc/bdev/bdev.c b/src/lxc/bdev/bdev.c index 97cba40a65..4688d96cd4 100644 --- a/src/lxc/bdev/bdev.c +++ b/src/lxc/bdev/bdev.c @@ -77,11 +77,6 @@ lxc_log_define(bdev, lxc); -struct rsync_data_char { - char *src; - char *dest; -}; - /* the bulk of this needs to become a common helper */ int do_rsync(const char *src, const char *dest) { @@ -110,7 +105,7 @@ int do_rsync(const char *src, const char *dest) /* the bulk of this needs to become a common helper */ char *dir_new_path(char *src, const char *oldname, const char *name, - const char *oldpath, const char *lxcpath) + const char *oldpath, const char *lxcpath) { char *ret, *p, *p2; int l1, l2, nlen; diff --git a/src/lxc/bdev/bdev.h b/src/lxc/bdev/bdev.h index 233ff636c0..c11e6f87d4 100644 --- a/src/lxc/bdev/bdev.h +++ b/src/lxc/bdev/bdev.h @@ -134,4 +134,9 @@ void detach_block_device(struct lxc_conf *conf); bool rootfs_is_blockdev(struct lxc_conf *conf); +struct rsync_data_char { + char *src; + char *dest; +}; + #endif // __LXC_BDEV_H diff --git a/src/lxc/bdev/lxcbtrfs.c b/src/lxc/bdev/lxcbtrfs.c index cbaebd9283..229bf5f8e3 100644 --- a/src/lxc/bdev/lxcbtrfs.c +++ b/src/lxc/bdev/lxcbtrfs.c @@ -22,15 +22,29 @@ */ #define _GNU_SOURCE +#include +#include +#include +#include #include #include #include +#include +#include +#include +#include +#include "bdev.h" #include "log.h" #include "lxcbtrfs.h" +#include "utils.h" lxc_log_define(btrfs, lxc); +/* defined in lxccontainer.c: needs to become common helper */ +extern char *dir_new_path(char *src, const char *oldname, const char *name, + const char *oldpath, const char *lxcpath); + /* * Return the full path of objid under dirid. Let's say dirid is * /lxc/c1/rootfs, and objid is /lxc/c1/rootfs/a/b/c. Then we will @@ -213,7 +227,7 @@ static int btrfs_subvolume_create(const char *path) return ret; } -static int btrfs_same_fs(const char *orig, const char *new) +int btrfs_same_fs(const char *orig, const char *new) { int fd_orig = -1, fd_new = -1, ret = -1; struct btrfs_ioctl_fs_info_args orig_args, new_args; @@ -254,7 +268,7 @@ static int btrfs_same_fs(const char *orig, const char *new) return ret; } -static int btrfs_snapshot(const char *orig, const char *new) +int btrfs_snapshot(const char *orig, const char *new) { int fd = -1, fddst = -1, ret = -1; struct btrfs_ioctl_vol_args_v2 args; diff --git a/src/lxc/bdev/lxcbtrfs.h b/src/lxc/bdev/lxcbtrfs.h index 7c47956eb6..40e45210b5 100644 --- a/src/lxc/bdev/lxcbtrfs.h +++ b/src/lxc/bdev/lxcbtrfs.h @@ -24,8 +24,10 @@ #ifndef __LXC_BTRFS_H #define __LXC_BTRFS_H +#define _GNU_SOURCE #include #include +#include typedef uint8_t u8; typedef uint16_t u16; @@ -315,6 +317,15 @@ struct btrfs_ioctl_ino_lookup_args { #define BTRFS_LAST_FREE_OBJECTID -256ULL #define BTRFS_FIRST_CHUNK_TREE_OBJECTID 256ULL +/* defined in bdev.h */ +struct bdev; + +/* defined in lxccontainer.h */ +struct bdev_specs; + +/* defined conf.h */ +struct lxc_conf; + struct mytree_node { u64 objid; u64 parentid; @@ -349,5 +360,7 @@ char *get_btrfs_subvol_path(int fd, u64 dir_id, u64 objid, char *name, int btrfs_list_get_path_rootid(int fd, u64 *treeid); bool is_btrfs_fs(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); #endif // __LXC_BTRFS_H