]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
btrfs: Evaluate io_tree in find_lock_delalloc_range()
authorGoldwyn Rodrigues <rgoldwyn@suse.de>
Fri, 21 Jun 2019 15:02:54 +0000 (10:02 -0500)
committerDavid Sterba <dsterba@suse.com>
Thu, 4 Jul 2019 15:26:17 +0000 (17:26 +0200)
Simplification.  No point passing the tree variable when it can be
evaluated from inode. The tests now use the io_tree from btrfs_inode as
opposed to creating one.

Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
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/tests/extent-io-tests.c

index 1eb671c16ff1bffec37a327b65e3fbbf40556489..6b154bce56872f6215c0cf1b82d77b7470fb6d17 100644 (file)
@@ -1780,10 +1780,10 @@ static noinline int lock_delalloc_pages(struct inode *inode,
  */
 EXPORT_FOR_TESTS
 noinline_for_stack bool find_lock_delalloc_range(struct inode *inode,
-                                   struct extent_io_tree *tree,
                                    struct page *locked_page, u64 *start,
                                    u64 *end)
 {
+       struct extent_io_tree *tree = &BTRFS_I(inode)->io_tree;
        u64 max_bytes = BTRFS_MAX_EXTENT_SIZE;
        u64 delalloc_start;
        u64 delalloc_end;
@@ -3330,7 +3330,6 @@ static noinline_for_stack int writepage_delalloc(struct inode *inode,
                struct page *page, struct writeback_control *wbc,
                u64 delalloc_start, unsigned long *nr_written)
 {
-       struct extent_io_tree *tree = &BTRFS_I(inode)->io_tree;
        u64 page_end = delalloc_start + PAGE_SIZE - 1;
        bool found;
        u64 delalloc_to_write = 0;
@@ -3340,8 +3339,7 @@ static noinline_for_stack int writepage_delalloc(struct inode *inode,
 
 
        while (delalloc_end < page_end) {
-               found = find_lock_delalloc_range(inode, tree,
-                                              page,
+               found = find_lock_delalloc_range(inode, page,
                                               &delalloc_start,
                                               &delalloc_end);
                if (!found) {
index 6e13a62a2974d598076dcf1c857e5f6f76b27e5c..401423b169765c49162f8e109ae953c6e96278ae 100644 (file)
@@ -549,7 +549,7 @@ 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
-bool find_lock_delalloc_range(struct inode *inode, struct extent_io_tree *tree,
+bool find_lock_delalloc_range(struct inode *inode,
                             struct page *locked_page, u64 *start,
                             u64 *end);
 #endif
index f0ccfb6449d208d9d402c7bfb1c9173661270993..1bf6b5a79191bc3339853a5e38694ffc8bff2fb7 100644 (file)
@@ -10,6 +10,7 @@
 #include "btrfs-tests.h"
 #include "../ctree.h"
 #include "../extent_io.h"
+#include "../btrfs_inode.h"
 
 #define PROCESS_UNLOCK         (1 << 0)
 #define PROCESS_RELEASE                (1 << 1)
@@ -58,7 +59,7 @@ static noinline int process_page_range(struct inode *inode, u64 start, u64 end,
 static int test_find_delalloc(u32 sectorsize)
 {
        struct inode *inode;
-       struct extent_io_tree tmp;
+       struct extent_io_tree *tmp;
        struct page *page;
        struct page *locked_page = NULL;
        unsigned long index = 0;
@@ -76,12 +77,13 @@ static int test_find_delalloc(u32 sectorsize)
                test_std_err(TEST_ALLOC_INODE);
                return -ENOMEM;
        }
+       tmp = &BTRFS_I(inode)->io_tree;
 
        /*
         * Passing NULL as we don't have fs_info but tracepoints are not used
         * at this point
         */
-       extent_io_tree_init(NULL, &tmp, IO_TREE_SELFTEST, NULL);
+       extent_io_tree_init(NULL, tmp, IO_TREE_SELFTEST, NULL);
 
        /*
         * First go through and create and mark all of our pages dirty, we pin
@@ -108,10 +110,10 @@ static int test_find_delalloc(u32 sectorsize)
         * |--- delalloc ---|
         * |---  search  ---|
         */
-       set_extent_delalloc(&tmp, 0, sectorsize - 1, 0, NULL);
+       set_extent_delalloc(tmp, 0, sectorsize - 1, 0, NULL);
        start = 0;
        end = 0;
-       found = find_lock_delalloc_range(inode, &tmp, locked_page, &start,
+       found = find_lock_delalloc_range(inode, locked_page, &start,
                                         &end);
        if (!found) {
                test_err("should have found at least one delalloc");
@@ -122,7 +124,7 @@ static int test_find_delalloc(u32 sectorsize)
                        sectorsize - 1, start, end);
                goto out_bits;
        }
-       unlock_extent(&tmp, start, end);
+       unlock_extent(tmp, start, end);
        unlock_page(locked_page);
        put_page(locked_page);
 
@@ -139,10 +141,10 @@ static int test_find_delalloc(u32 sectorsize)
                test_err("couldn't find the locked page");
                goto out_bits;
        }
-       set_extent_delalloc(&tmp, sectorsize, max_bytes - 1, 0, NULL);
+       set_extent_delalloc(tmp, sectorsize, max_bytes - 1, 0, NULL);
        start = test_start;
        end = 0;
-       found = find_lock_delalloc_range(inode, &tmp, locked_page, &start,
+       found = find_lock_delalloc_range(inode, locked_page, &start,
                                         &end);
        if (!found) {
                test_err("couldn't find delalloc in our range");
@@ -158,7 +160,7 @@ static int test_find_delalloc(u32 sectorsize)
                test_err("there were unlocked pages in the range");
                goto out_bits;
        }
-       unlock_extent(&tmp, start, end);
+       unlock_extent(tmp, start, end);
        /* locked_page was unlocked above */
        put_page(locked_page);
 
@@ -176,7 +178,7 @@ static int test_find_delalloc(u32 sectorsize)
        }
        start = test_start;
        end = 0;
-       found = find_lock_delalloc_range(inode, &tmp, locked_page, &start,
+       found = find_lock_delalloc_range(inode, locked_page, &start,
                                         &end);
        if (found) {
                test_err("found range when we shouldn't have");
@@ -194,10 +196,10 @@ static int test_find_delalloc(u32 sectorsize)
         *
         * We are re-using our test_start from above since it works out well.
         */
-       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;
        end = 0;
-       found = find_lock_delalloc_range(inode, &tmp, locked_page, &start,
+       found = find_lock_delalloc_range(inode, locked_page, &start,
                                         &end);
        if (!found) {
                test_err("didn't find our range");
@@ -213,7 +215,7 @@ static int test_find_delalloc(u32 sectorsize)
                test_err("pages in range were not all locked");
                goto out_bits;
        }
-       unlock_extent(&tmp, start, end);
+       unlock_extent(tmp, start, end);
 
        /*
         * Now to test where we run into a page that is no longer dirty in the
@@ -238,7 +240,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 = find_lock_delalloc_range(inode, &tmp, locked_page, &start,
+       found = find_lock_delalloc_range(inode, locked_page, &start,
                                         &end);
        if (!found) {
                test_err("didn't find our range");
@@ -256,7 +258,7 @@ static int test_find_delalloc(u32 sectorsize)
        }
        ret = 0;
 out_bits:
-       clear_extent_bits(&tmp, 0, total_dirty - 1, (unsigned)-1);
+       clear_extent_bits(tmp, 0, total_dirty - 1, (unsigned)-1);
 out:
        if (locked_page)
                put_page(locked_page);