btrfs: use EXPORT_FOR_TESTS for conditionally exported functions
authorJohannes Thumshirn <jthumshirn@suse.de>
Mon, 19 Nov 2018 09:38:17 +0000 (10:38 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 17 Dec 2018 13:51:37 +0000 (14:51 +0100)
Several functions in BTRFS are only used inside the source file they are
declared if CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not defined. However if
CONFIG_BTRFS_FS_RUN_SANITY_TESTS is defined these functions are shared
with the unit tests code.

Before the introduction of the EXPORT_FOR_TESTS macro, these functions
could not be declared as static and the compiler had a harder task when
optimizing and inlining them.

As we have EXPORT_FOR_TESTS now, use it where appropriate to support the
compiler.

Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent_io.c
fs/btrfs/extent_io.h
fs/btrfs/free-space-tree.c
fs/btrfs/tests/extent-io-tests.c

index 16d5eac7d7dff29cb0380693f4acc9cfe548469d..4ea808d6cfbcc794c2dbeccde3fa6f6331b1d749 100644 (file)
@@ -1556,7 +1556,8 @@ static noinline int lock_delalloc_pages(struct inode *inode,
  *
  * 1 is returned if we find something, 0 if nothing was in the tree
  */
-static noinline_for_stack u64 find_lock_delalloc_range(struct inode *inode,
+EXPORT_FOR_TESTS
+noinline_for_stack u64 find_lock_delalloc_range(struct inode *inode,
                                    struct extent_io_tree *tree,
                                    struct page *locked_page, u64 *start,
                                    u64 *end)
@@ -1637,16 +1638,6 @@ out_failed:
        return found;
 }
 
-#ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
-u64 btrfs_find_lock_delalloc_range(struct inode *inode,
-                                   struct extent_io_tree *tree,
-                                   struct page *locked_page, u64 *start,
-                                   u64 *end)
-{
-       return find_lock_delalloc_range(inode, tree, locked_page, start, end);
-}
-#endif
-
 static int __process_pages_contig(struct address_space *mapping,
                                  struct page *locked_page,
                                  pgoff_t start_index, pgoff_t end_index,
index 30bfeefa2d899f7d6c133e5311832c230cfd7f53..22b34426f9f8ca8997458805db1953e334089fb3 100644 (file)
@@ -522,10 +522,9 @@ int free_io_failure(struct extent_io_tree *failure_tree,
                    struct extent_io_tree *io_tree,
                    struct io_failure_record *rec);
 #ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
-u64 btrfs_find_lock_delalloc_range(struct inode *inode,
-                                     struct extent_io_tree *tree,
-                                     struct page *locked_page, u64 *start,
-                                     u64 *end);
+u64 find_lock_delalloc_range(struct inode *inode, struct extent_io_tree *tree,
+                            struct page *locked_page, u64 *start,
+                            u64 *end);
 #endif
 struct extent_buffer *alloc_test_extent_buffer(struct btrfs_fs_info *fs_info,
                                               u64 start);
index d6736595ec572995690f0268a623b4f53bb3e979..e5089087eaa66ea3c4fcb1e679bf46fe8ee6c916 100644 (file)
@@ -74,11 +74,11 @@ out:
        return ret;
 }
 
-struct btrfs_free_space_info *
-search_free_space_info(struct btrfs_trans_handle *trans,
-                      struct btrfs_fs_info *fs_info,
-                      struct btrfs_block_group_cache *block_group,
-                      struct btrfs_path *path, int cow)
+EXPORT_FOR_TESTS
+struct btrfs_free_space_info *search_free_space_info(
+               struct btrfs_trans_handle *trans, struct btrfs_fs_info *fs_info,
+               struct btrfs_block_group_cache *block_group,
+               struct btrfs_path *path, int cow)
 {
        struct btrfs_root *root = fs_info->free_space_root;
        struct btrfs_key key;
@@ -176,6 +176,7 @@ static void le_bitmap_set(unsigned long *map, unsigned int start, int len)
        }
 }
 
+EXPORT_FOR_TESTS
 int convert_free_space_to_bitmaps(struct btrfs_trans_handle *trans,
                                  struct btrfs_block_group_cache *block_group,
                                  struct btrfs_path *path)
@@ -315,6 +316,7 @@ out:
        return ret;
 }
 
+EXPORT_FOR_TESTS
 int convert_free_space_to_extents(struct btrfs_trans_handle *trans,
                                  struct btrfs_block_group_cache *block_group,
                                  struct btrfs_path *path)
@@ -487,6 +489,7 @@ out:
        return ret;
 }
 
+EXPORT_FOR_TESTS
 int free_space_test_bit(struct btrfs_block_group_cache *block_group,
                        struct btrfs_path *path, u64 offset)
 {
@@ -775,6 +778,7 @@ out:
        return ret;
 }
 
+EXPORT_FOR_TESTS
 int __remove_from_free_space_tree(struct btrfs_trans_handle *trans,
                                  struct btrfs_block_group_cache *block_group,
                                  struct btrfs_path *path, u64 start, u64 size)
@@ -968,6 +972,7 @@ out:
        return ret;
 }
 
+EXPORT_FOR_TESTS
 int __add_to_free_space_tree(struct btrfs_trans_handle *trans,
                             struct btrfs_block_group_cache *block_group,
                             struct btrfs_path *path, u64 start, u64 size)
index db073fdbdd65e0ab6e83eceb55859066f1e3d24a..d33f9a95bce18c0d97799fbafcde0afda5ec6d8b 100644 (file)
@@ -107,7 +107,7 @@ static int test_find_delalloc(u32 sectorsize)
        set_extent_delalloc(&tmp, 0, sectorsize - 1, 0, NULL);
        start = 0;
        end = 0;
-       found = btrfs_find_lock_delalloc_range(inode, &tmp, locked_page, &start,
+       found = find_lock_delalloc_range(inode, &tmp, locked_page, &start,
                                         &end);
        if (!found) {
                test_err("should have found at least one delalloc");
@@ -138,7 +138,7 @@ static int test_find_delalloc(u32 sectorsize)
        set_extent_delalloc(&tmp, sectorsize, max_bytes - 1, 0, NULL);
        start = test_start;
        end = 0;
-       found = btrfs_find_lock_delalloc_range(inode, &tmp, locked_page, &start,
+       found = find_lock_delalloc_range(inode, &tmp, locked_page, &start,
                                         &end);
        if (!found) {
                test_err("couldn't find delalloc in our range");
@@ -172,7 +172,7 @@ static int test_find_delalloc(u32 sectorsize)
        }
        start = test_start;
        end = 0;
-       found = btrfs_find_lock_delalloc_range(inode, &tmp, locked_page, &start,
+       found = find_lock_delalloc_range(inode, &tmp, locked_page, &start,
                                         &end);
        if (found) {
                test_err("found range when we shouldn't have");
@@ -193,7 +193,7 @@ static int test_find_delalloc(u32 sectorsize)
        set_extent_delalloc(&tmp, max_bytes, total_dirty - 1, 0, NULL);
        start = test_start;
        end = 0;
-       found = btrfs_find_lock_delalloc_range(inode, &tmp, locked_page, &start,
+       found = find_lock_delalloc_range(inode, &tmp, locked_page, &start,
                                         &end);
        if (!found) {
                test_err("didn't find our range");
@@ -234,7 +234,7 @@ static int test_find_delalloc(u32 sectorsize)
         * this changes at any point in the future we will need to fix this
         * tests expected behavior.
         */
-       found = btrfs_find_lock_delalloc_range(inode, &tmp, locked_page, &start,
+       found = find_lock_delalloc_range(inode, &tmp, locked_page, &start,
                                         &end);
        if (!found) {
                test_err("didn't find our range");