Blob Blame History Raw
From: Omar Sandoval <osandov@fb.com>
Date: Wed, 16 May 2018 16:34:31 -0700
Subject: Btrfs: rename and export get_chunk_map
Patch-mainline: Not yet, submitted
References: fate#322477

The Btrfs swap code is going to need it, so give it a btrfs_ prefix and
make it non-static.

Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Omar Sandoval <osandov@fb.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Acked-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/volumes.c |   29 ++++++++++++++++++-----------
 fs/btrfs/volumes.h |    2 ++
 2 files changed, 20 insertions(+), 11 deletions(-)

--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -2971,8 +2971,15 @@ static int btrfs_del_sys_chunk(struct bt
 	return ret;
 }
 
-static struct extent_map *get_chunk_map(struct btrfs_fs_info *fs_info,
-					u64 logical, u64 length)
+/*
+ * btrfs_get_chunk_map() - Find the mapping containing the given logical extent.
+ * @logical: Logical block offset in bytes.
+ * @length: Length of extent in bytes.
+ *
+ * Return: Chunk mapping or ERR_PTR.
+ */
+struct extent_map *btrfs_get_chunk_map(struct btrfs_fs_info *fs_info,
+				       u64 logical, u64 length)
 {
 	struct extent_map_tree *em_tree;
 	struct extent_map *em;
@@ -3010,7 +3017,7 @@ int btrfs_remove_chunk(struct btrfs_tran
 	int i, ret = 0;
 	struct btrfs_fs_devices *fs_devices = fs_info->fs_devices;
 
-	em = get_chunk_map(fs_info, chunk_offset, 1);
+	em = btrfs_get_chunk_map(fs_info, chunk_offset, 1);
 	if (IS_ERR(em)) {
 		/*
 		 * This is a logic error, but we don't want to just rely on the
@@ -5171,7 +5178,7 @@ int btrfs_finish_chunk_alloc(struct btrf
 	int i = 0;
 	int ret = 0;
 
-	em = get_chunk_map(fs_info, chunk_offset, chunk_size);
+	em = btrfs_get_chunk_map(fs_info, chunk_offset, chunk_size);
 	if (IS_ERR(em))
 		return PTR_ERR(em);
 
@@ -5318,7 +5325,7 @@ int btrfs_chunk_readonly(struct btrfs_fs
 	int miss_ndevs = 0;
 	int i;
 
-	em = get_chunk_map(fs_info, chunk_offset, 1);
+	em = btrfs_get_chunk_map(fs_info, chunk_offset, 1);
 	if (IS_ERR(em))
 		return 1;
 
@@ -5377,7 +5384,7 @@ int btrfs_num_copies(struct btrfs_fs_inf
 	struct map_lookup *map;
 	int ret;
 
-	em = get_chunk_map(fs_info, logical, len);
+	em = btrfs_get_chunk_map(fs_info, logical, len);
 	if (IS_ERR(em))
 		/*
 		 * We could return errors for these cases, but that could get
@@ -5417,7 +5424,7 @@ unsigned long btrfs_full_stripe_len(stru
 	struct map_lookup *map;
 	unsigned long len = fs_info->sectorsize;
 
-	em = get_chunk_map(fs_info, logical, len);
+	em = btrfs_get_chunk_map(fs_info, logical, len);
 	WARN_ON(IS_ERR(em));
 
 	map = em->map_lookup;
@@ -5434,7 +5441,7 @@ int btrfs_is_parity_mirror(struct btrfs_
 	struct map_lookup *map;
 	int ret = 0;
 
-	em = get_chunk_map(fs_info, logical, len);
+	em = btrfs_get_chunk_map(fs_info, logical, len);
 	WARN_ON(IS_ERR(em));
 
 	map = em->map_lookup;
@@ -5580,7 +5587,7 @@ static int __btrfs_map_block_for_discard
 	/* discard always return a bbio */
 	ASSERT(bbio_ret);
 
-	em = get_chunk_map(fs_info, logical, length);
+	em = btrfs_get_chunk_map(fs_info, logical, length);
 	if (IS_ERR(em))
 		return PTR_ERR(em);
 
@@ -5906,7 +5913,7 @@ static int __btrfs_map_block(struct btrf
 		return __btrfs_map_block_for_discard(fs_info, logical,
 						     length, bbio_ret);
 
-	em = get_chunk_map(fs_info, logical, *length);
+	em = btrfs_get_chunk_map(fs_info, logical, *length);
 	if (IS_ERR(em))
 		return PTR_ERR(em);
 
@@ -6214,7 +6221,7 @@ int btrfs_rmap_block(struct btrfs_fs_inf
 	u64 rmap_len;
 	int i, j, nr = 0;
 
-	em = get_chunk_map(fs_info, chunk_start, 1);
+	em = btrfs_get_chunk_map(fs_info, chunk_start, 1);
 	if (IS_ERR(em))
 		return -EIO;
 
--- a/fs/btrfs/volumes.h
+++ b/fs/btrfs/volumes.h
@@ -489,6 +489,8 @@ int btrfs_finish_chunk_alloc(struct btrf
 				u64 chunk_offset, u64 chunk_size);
 int btrfs_remove_chunk(struct btrfs_trans_handle *trans,
 		       struct btrfs_fs_info *fs_info, u64 chunk_offset);
+struct extent_map *btrfs_get_chunk_map(struct btrfs_fs_info *fs_info,
+				       u64 logical, u64 length);
 
 static inline int btrfs_dev_stats_dirty(struct btrfs_device *dev)
 {