@@ -202,7 +202,7 @@ int main(int argc, char **argv)
fs_info = open_ctree_fs_info(argv[optind], 0, 0, 0,
OPEN_CTREE_CHUNK_ROOT_ONLY |
- OPEN_CTREE_IGNORE_CHUNK_TREE_ERROR);
+ OPEN_CTREE_IGNORE_CHUNK_TREE_ERROR, NULL);
if (!fs_info) {
error("open ctree failed");
return 1;
@@ -10162,7 +10162,7 @@ static int cmd_check(const struct cmd_struct *cmd, int argc, char **argv)
ctree_flags |= OPEN_CTREE_PARTIAL;
info = open_ctree_fs_info(argv[optind], bytenr, tree_root_bytenr,
- chunk_root_bytenr, ctree_flags);
+ chunk_root_bytenr, ctree_flags, NULL);
if (!info) {
error("cannot open file system");
ret = -EIO;
@@ -586,7 +586,7 @@ static int map_seed_devices(struct list_head *all_uuids)
* open_ctree_* detects seed/sprout mapping
*/
fs_info = open_ctree_fs_info(device->name, 0, 0, 0,
- OPEN_CTREE_PARTIAL);
+ OPEN_CTREE_PARTIAL, NULL);
if (!fs_info)
continue;
@@ -459,7 +459,7 @@ static int cmd_inspect_dump_tree(const struct cmd_struct *cmd,
printf("%s\n", PACKAGE_STRING);
- info = open_ctree_fs_info(argv[optind], 0, 0, 0, open_ctree_flags);
+ info = open_ctree_fs_info(argv[optind], 0, 0, 0, open_ctree_flags, NULL);
if (!info) {
error("unable to open %s", argv[optind]);
goto out;
@@ -1439,7 +1439,7 @@ open_ctree_with_broken_chunk(struct recover_control *rc)
u64 features;
int ret;
- fs_info = btrfs_new_fs_info(1, BTRFS_SUPER_INFO_OFFSET);
+ fs_info = btrfs_new_fs_info(1, BTRFS_SUPER_INFO_OFFSET, NULL);
if (!fs_info) {
fprintf(stderr, "Failed to allocate memory for fs_info\n");
return ERR_PTR(-ENOMEM);
@@ -242,7 +242,7 @@ static int cmd_rescue_fix_device_size(const struct cmd_struct *cmd,
}
fs_info = open_ctree_fs_info(devname, 0, 0, 0, OPEN_CTREE_WRITES |
- OPEN_CTREE_PARTIAL);
+ OPEN_CTREE_PARTIAL, NULL);
if (!fs_info) {
error("could not open btrfs");
ret = -EIO;
@@ -1280,7 +1280,7 @@ static struct btrfs_root *open_fs(const char *dev, u64 root_location,
*/
fs_info = open_ctree_fs_info(dev, bytenr, root_location, 0,
OPEN_CTREE_PARTIAL |
- OPEN_CTREE_NO_BLOCK_GROUPS);
+ OPEN_CTREE_NO_BLOCK_GROUPS, NULL);
if (fs_info)
break;
fprintf(stderr, "Could not open root, trying backup super\n");
@@ -789,7 +789,8 @@ void btrfs_free_fs_info(struct btrfs_fs_info *fs_info)
free(fs_info);
}
-struct btrfs_fs_info *btrfs_new_fs_info(int writable, u64 sb_bytenr)
+struct btrfs_fs_info *btrfs_new_fs_info(int writable, u64 sb_bytenr,
+ char *auth_key)
{
struct btrfs_fs_info *fs_info;
@@ -1189,7 +1190,7 @@ static struct btrfs_fs_info *__open_ctree_fd(int fp, const char *path,
u64 sb_bytenr,
u64 root_tree_bytenr,
u64 chunk_root_bytenr,
- unsigned flags)
+ unsigned flags, char *auth_key)
{
struct btrfs_fs_info *fs_info;
struct btrfs_super_block *disk_super;
@@ -1206,7 +1207,8 @@ static struct btrfs_fs_info *__open_ctree_fd(int fp, const char *path,
if (posix_fadvise(fp, 0, 0, POSIX_FADV_DONTNEED))
fprintf(stderr, "Warning, could not drop caches\n");
- fs_info = btrfs_new_fs_info(flags & OPEN_CTREE_WRITES, sb_bytenr);
+ fs_info = btrfs_new_fs_info(flags & OPEN_CTREE_WRITES, sb_bytenr,
+ auth_key);
if (!fs_info) {
fprintf(stderr, "Failed to allocate memory for fs_info\n");
return NULL;
@@ -1317,7 +1319,7 @@ out:
struct btrfs_fs_info *open_ctree_fs_info(const char *filename,
u64 sb_bytenr, u64 root_tree_bytenr,
u64 chunk_root_bytenr,
- unsigned flags)
+ unsigned flags, char *auth_key)
{
int fp;
int ret;
@@ -1344,7 +1346,7 @@ struct btrfs_fs_info *open_ctree_fs_info(const char *filename,
return NULL;
}
info = __open_ctree_fd(fp, filename, sb_bytenr, root_tree_bytenr,
- chunk_root_bytenr, flags);
+ chunk_root_bytenr, flags, auth_key);
close(fp);
return info;
}
@@ -1356,7 +1358,7 @@ struct btrfs_root *open_ctree(const char *filename, u64 sb_bytenr,
/* This flags may not return fs_info with any valid root */
BUG_ON(flags & OPEN_CTREE_IGNORE_CHUNK_TREE_ERROR);
- info = open_ctree_fs_info(filename, sb_bytenr, 0, 0, flags);
+ info = open_ctree_fs_info(filename, sb_bytenr, 0, 0, flags, NULL);
if (!info)
return NULL;
if (flags & __OPEN_CTREE_RETURN_CHUNK_ROOT)
@@ -1375,7 +1377,7 @@ struct btrfs_root *open_ctree_fd(int fp, const char *path, u64 sb_bytenr,
(unsigned long long)flags);
return NULL;
}
- info = __open_ctree_fd(fp, path, sb_bytenr, 0, 0, flags);
+ info = __open_ctree_fd(fp, path, sb_bytenr, 0, 0, flags, NULL);
if (!info)
return NULL;
if (flags & __OPEN_CTREE_RETURN_CHUNK_ROOT)
@@ -143,7 +143,8 @@ void btrfs_setup_root(struct btrfs_root *root, struct btrfs_fs_info *fs_info,
int clean_tree_block(struct extent_buffer *buf);
void btrfs_free_fs_info(struct btrfs_fs_info *fs_info);
-struct btrfs_fs_info *btrfs_new_fs_info(int writable, u64 sb_bytenr);
+struct btrfs_fs_info *btrfs_new_fs_info(int writable, u64 sb_bytenr,
+ char *auth_key);
int btrfs_check_fs_compatibility(struct btrfs_super_block *sb,
unsigned int flags);
int btrfs_setup_all_roots(struct btrfs_fs_info *fs_info, u64 root_tree_bytenr,
@@ -163,7 +164,7 @@ struct btrfs_root *open_ctree_fd(int fp, const char *path, u64 sb_bytenr,
struct btrfs_fs_info *open_ctree_fs_info(const char *filename,
u64 sb_bytenr, u64 root_tree_bytenr,
u64 chunk_root_bytenr,
- unsigned flags);
+ unsigned flags, char *auth_key);
int close_ctree_fs_info(struct btrfs_fs_info *fs_info);
static inline int close_ctree(struct btrfs_root *root)
{
@@ -2549,7 +2549,8 @@ static int restore_metadump(const char *input, FILE *out, int old_restore,
info = open_ctree_fs_info(target, 0, 0, 0,
OPEN_CTREE_WRITES |
OPEN_CTREE_RESTORE |
- OPEN_CTREE_PARTIAL);
+ OPEN_CTREE_PARTIAL,
+ NULL);
if (!info) {
error("open ctree failed");
ret = -EIO;
@@ -2913,7 +2914,7 @@ int BOX_MAIN(image)(int argc, char *argv[])
info = open_ctree_fs_info(target, 0, 0, 0,
OPEN_CTREE_PARTIAL |
- OPEN_CTREE_RESTORE);
+ OPEN_CTREE_RESTORE, NULL);
if (!info) {
error("open ctree failed at %s", target);
return 1;
@@ -1206,7 +1206,8 @@ int BOX_MAIN(mkfs)(int argc, char **argv)
}
fs_info = open_ctree_fs_info(file, 0, 0, 0,
- OPEN_CTREE_WRITES | OPEN_CTREE_TEMPORARY_SUPER);
+ OPEN_CTREE_WRITES | OPEN_CTREE_TEMPORARY_SUPER,
+ auth_key);
if (!fs_info) {
error("open ctree failed");
goto error;