From abf010e593cec271a632b746c031a1bf206f7769 Mon Sep 17 00:00:00 2001 From: Qu Wenruo Date: Fri, 16 Jan 2015 11:22:28 +0800 Subject: btrfs-progs: Add new btrfs_open_ctree_flags CHUNK_ONLY Add new flag CHUNK_ONLY and internal used only flag __RETURN_CHUNK. CHUNK_ONLY will imply __RETURN_CHUNK, SUPPRESS_ERROR and PARTIAL, which will allow the fs to be opened with only chunk tree OK. This will improve the usability for btrfs-find-root. Signed-off-by: Qu Wenruo Signed-off-by: David Sterba --- disk-io.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'disk-io.c') diff --git a/disk-io.c b/disk-io.c index 6c1961e..b709ff5 100644 --- a/disk-io.c +++ b/disk-io.c @@ -1197,7 +1197,7 @@ static struct btrfs_fs_info *__open_ctree_fd(int fp, const char *path, BTRFS_UUID_SIZE); ret = btrfs_setup_all_roots(fs_info, root_tree_bytenr, flags); - if (ret) + if (ret && !(flags & __OPEN_CTREEE_RETURN_CHUNK_ROOT)) goto out_chunk; return fs_info; @@ -1242,6 +1242,8 @@ struct btrfs_root *open_ctree(const char *filename, u64 sb_bytenr, info = open_ctree_fs_info(filename, sb_bytenr, 0, flags); if (!info) return NULL; + if (flags & __OPEN_CTREEE_RETURN_CHUNK_ROOT) + return info->chunk_root; return info->fs_root; } @@ -1252,6 +1254,8 @@ struct btrfs_root *open_ctree_fd(int fp, const char *path, u64 sb_bytenr, info = __open_ctree_fd(fp, path, sb_bytenr, 0, flags); if (!info) return NULL; + if (flags & __OPEN_CTREEE_RETURN_CHUNK_ROOT) + return info->chunk_root; return info->fs_root; } -- cgit v1.2.1