btrfs: Move epd::extent_locked check to writepage_delalloc's caller
authorNikolay Borisov <nborisov@suse.com>
Thu, 8 Nov 2018 08:18:06 +0000 (10:18 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 17 Dec 2018 13:51:32 +0000 (14:51 +0100)
If epd::extent_locked is set then writepage_delalloc terminates. Make
this a bit more apparent in the caller by simply bubbling the check up.
This enables to remove epd as an argument to writepage_delalloc in a
future patch. No functional change.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent_io.c

index e7cbd3f..2ccc8d9 100644 (file)
@@ -3214,8 +3214,6 @@ static noinline_for_stack int writepage_delalloc(struct inode *inode,
        int ret;
        int page_started = 0;
 
-       if (epd->extent_locked)
-               return 0;
 
        while (delalloc_end < page_end) {
                nr_delalloc = find_lock_delalloc_range(inode, tree,
@@ -3471,11 +3469,14 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc,
 
        set_page_extent_mapped(page);
 
-       ret = writepage_delalloc(inode, page, wbc, epd, start, &nr_written);
-       if (ret == 1)
-               goto done_unlocked;
-       if (ret)
-               goto done;
+       if (!epd->extent_locked) {
+               ret = writepage_delalloc(inode, page, wbc, epd, start,
+                                        &nr_written);
+               if (ret == 1)
+                       goto done_unlocked;
+               if (ret)
+                       goto done;
+       }
 
        ret = __extent_writepage_io(inode, page, wbc, epd,
                                    i_size, nr_written, write_flags, &nr);