Browse Source

btrfs: tests: add separate stub for find_lock_delalloc_range

The helper find_lock_delalloc_range is now conditionally built static,
dpending on whether the self-tests are enabled or not. There's a macro
that is supposed to hide the export, used only once. To discourage
further use, drop it an add a public wrapper for the helper needed by
tests.

Reviewed-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba 7 years ago
parent
commit
9c36396c2a
4 changed files with 18 additions and 13 deletions
  1. 0 6
      fs/btrfs/ctree.h
  2. 12 1
      fs/btrfs/extent_io.c
  3. 1 1
      fs/btrfs/extent_io.h
  4. 5 5
      fs/btrfs/tests/extent-io-tests.c

+ 0 - 6
fs/btrfs/ctree.h

@@ -41,12 +41,6 @@ extern struct kmem_cache *btrfs_path_cachep;
 extern struct kmem_cache *btrfs_free_space_cachep;
 extern struct kmem_cache *btrfs_free_space_cachep;
 struct btrfs_ordered_sum;
 struct btrfs_ordered_sum;
 
 
-#ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
-#define STATIC noinline
-#else
-#define STATIC static noinline
-#endif
-
 #define BTRFS_MAGIC 0x4D5F53665248425FULL /* ascii _BHRfS_M, no null */
 #define BTRFS_MAGIC 0x4D5F53665248425FULL /* ascii _BHRfS_M, no null */
 
 
 #define BTRFS_MAX_MIRRORS 3
 #define BTRFS_MAX_MIRRORS 3

+ 12 - 1
fs/btrfs/extent_io.c

@@ -1563,7 +1563,7 @@ static noinline int lock_delalloc_pages(struct inode *inode,
  *
  *
  * 1 is returned if we find something, 0 if nothing was in the tree
  * 1 is returned if we find something, 0 if nothing was in the tree
  */
  */
-STATIC u64 find_lock_delalloc_range(struct inode *inode,
+static noinline_for_stack u64 find_lock_delalloc_range(struct inode *inode,
 				    struct extent_io_tree *tree,
 				    struct extent_io_tree *tree,
 				    struct page *locked_page, u64 *start,
 				    struct page *locked_page, u64 *start,
 				    u64 *end, u64 max_bytes)
 				    u64 *end, u64 max_bytes)
@@ -1643,6 +1643,17 @@ out_failed:
 	return found;
 	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, u64 max_bytes)
+{
+	return find_lock_delalloc_range(inode, tree, locked_page, start, end,
+			max_bytes);
+}
+#endif
+
 static int __process_pages_contig(struct address_space *mapping,
 static int __process_pages_contig(struct address_space *mapping,
 				  struct page *locked_page,
 				  struct page *locked_page,
 				  pgoff_t start_index, pgoff_t end_index,
 				  pgoff_t start_index, pgoff_t end_index,

+ 1 - 1
fs/btrfs/extent_io.h

@@ -546,7 +546,7 @@ int free_io_failure(struct extent_io_tree *failure_tree,
 		    struct extent_io_tree *io_tree,
 		    struct extent_io_tree *io_tree,
 		    struct io_failure_record *rec);
 		    struct io_failure_record *rec);
 #ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
 #ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
-noinline u64 find_lock_delalloc_range(struct inode *inode,
+u64 btrfs_find_lock_delalloc_range(struct inode *inode,
 				      struct extent_io_tree *tree,
 				      struct extent_io_tree *tree,
 				      struct page *locked_page, u64 *start,
 				      struct page *locked_page, u64 *start,
 				      u64 *end, u64 max_bytes);
 				      u64 *end, u64 max_bytes);

+ 5 - 5
fs/btrfs/tests/extent-io-tests.c

@@ -106,7 +106,7 @@ static int test_find_delalloc(u32 sectorsize)
 	set_extent_delalloc(&tmp, 0, sectorsize - 1, 0, NULL);
 	set_extent_delalloc(&tmp, 0, sectorsize - 1, 0, NULL);
 	start = 0;
 	start = 0;
 	end = 0;
 	end = 0;
-	found = find_lock_delalloc_range(inode, &tmp, locked_page, &start,
+	found = btrfs_find_lock_delalloc_range(inode, &tmp, locked_page, &start,
 					 &end, max_bytes);
 					 &end, max_bytes);
 	if (!found) {
 	if (!found) {
 		test_err("should have found at least one delalloc");
 		test_err("should have found at least one delalloc");
@@ -137,7 +137,7 @@ static int test_find_delalloc(u32 sectorsize)
 	set_extent_delalloc(&tmp, sectorsize, max_bytes - 1, 0, NULL);
 	set_extent_delalloc(&tmp, sectorsize, max_bytes - 1, 0, NULL);
 	start = test_start;
 	start = test_start;
 	end = 0;
 	end = 0;
-	found = find_lock_delalloc_range(inode, &tmp, locked_page, &start,
+	found = btrfs_find_lock_delalloc_range(inode, &tmp, locked_page, &start,
 					 &end, max_bytes);
 					 &end, max_bytes);
 	if (!found) {
 	if (!found) {
 		test_err("couldn't find delalloc in our range");
 		test_err("couldn't find delalloc in our range");
@@ -171,7 +171,7 @@ static int test_find_delalloc(u32 sectorsize)
 	}
 	}
 	start = test_start;
 	start = test_start;
 	end = 0;
 	end = 0;
-	found = find_lock_delalloc_range(inode, &tmp, locked_page, &start,
+	found = btrfs_find_lock_delalloc_range(inode, &tmp, locked_page, &start,
 					 &end, max_bytes);
 					 &end, max_bytes);
 	if (found) {
 	if (found) {
 		test_err("found range when we shouldn't have");
 		test_err("found range when we shouldn't have");
@@ -192,7 +192,7 @@ static int test_find_delalloc(u32 sectorsize)
 	set_extent_delalloc(&tmp, max_bytes, total_dirty - 1, 0, NULL);
 	set_extent_delalloc(&tmp, max_bytes, total_dirty - 1, 0, NULL);
 	start = test_start;
 	start = test_start;
 	end = 0;
 	end = 0;
-	found = find_lock_delalloc_range(inode, &tmp, locked_page, &start,
+	found = btrfs_find_lock_delalloc_range(inode, &tmp, locked_page, &start,
 					 &end, max_bytes);
 					 &end, max_bytes);
 	if (!found) {
 	if (!found) {
 		test_err("didn't find our range");
 		test_err("didn't find our range");
@@ -233,7 +233,7 @@ static int test_find_delalloc(u32 sectorsize)
 	 * this changes at any point in the future we will need to fix this
 	 * this changes at any point in the future we will need to fix this
 	 * tests expected behavior.
 	 * tests expected behavior.
 	 */
 	 */
-	found = find_lock_delalloc_range(inode, &tmp, locked_page, &start,
+	found = btrfs_find_lock_delalloc_range(inode, &tmp, locked_page, &start,
 					 &end, max_bytes);
 					 &end, max_bytes);
 	if (!found) {
 	if (!found) {
 		test_err("didn't find our range");
 		test_err("didn't find our range");