btrfs: convert btrfs_run_delalloc_range() to take a folio
authorJosef Bacik <josef@toxicpanda.com>
Wed, 24 Jul 2024 20:56:32 +0000 (16:56 -0400)
committerDavid Sterba <dsterba@suse.com>
Tue, 10 Sep 2024 14:51:15 +0000 (16:51 +0200)
Now that every function that btrfs_run_delalloc_range calls takes a
folio, update it to take a folio and update the callers.

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/btrfs_inode.h
fs/btrfs/extent_io.c
fs/btrfs/inode.c

index 3056c8aed8ef4f4e64c0b48e55a2b5f6a10d8f46..5599b458a9a98eabcc9e22b73dbeaa95add8c798 100644 (file)
@@ -596,7 +596,7 @@ int btrfs_prealloc_file_range_trans(struct inode *inode,
                                    struct btrfs_trans_handle *trans, int mode,
                                    u64 start, u64 num_bytes, u64 min_size,
                                    loff_t actual_len, u64 *alloc_hint);
-int btrfs_run_delalloc_range(struct btrfs_inode *inode, struct page *locked_page,
+int btrfs_run_delalloc_range(struct btrfs_inode *inode, struct folio *locked_folio,
                             u64 start, u64 end, struct writeback_control *wbc);
 int btrfs_writepage_cow_fixup(struct page *page);
 int btrfs_encoded_io_compression_from_extent(struct btrfs_fs_info *fs_info,
index 9ae17c9fd89b20e83736cccc5d616b9118655be6..5ff38e3f28e6bfc8e6e8696c86eb44d0820401f1 100644 (file)
@@ -1254,7 +1254,7 @@ static noinline_for_stack int writepage_delalloc(struct btrfs_inode *inode,
 
                if (ret >= 0) {
                        /* No errors hit so far, run the current delalloc range. */
-                       ret = btrfs_run_delalloc_range(inode, &folio->page,
+                       ret = btrfs_run_delalloc_range(inode, folio,
                                                       found_start,
                                                       found_start + found_len - 1,
                                                       wbc);
index 3ee2c863adeed290823ceaa1c3ebb111eb4a80bd..e189dc9b6a3b06063db0e0b9e679e570a2f4e78c 100644 (file)
@@ -2287,42 +2287,40 @@ static bool should_nocow(struct btrfs_inode *inode, u64 start, u64 end)
  * Function to process delayed allocation (create CoW) for ranges which are
  * being touched for the first time.
  */
-int btrfs_run_delalloc_range(struct btrfs_inode *inode, struct page *locked_page,
+int btrfs_run_delalloc_range(struct btrfs_inode *inode, struct folio *locked_folio,
                             u64 start, u64 end, struct writeback_control *wbc)
 {
        const bool zoned = btrfs_is_zoned(inode->root->fs_info);
        int ret;
 
        /*
-        * The range must cover part of the @locked_page, or a return of 1
+        * The range must cover part of the @locked_folio, or a return of 1
         * can confuse the caller.
         */
-       ASSERT(!(end <= page_offset(locked_page) ||
-                start >= page_offset(locked_page) + PAGE_SIZE));
+       ASSERT(!(end <= folio_pos(locked_folio) ||
+                start >= folio_pos(locked_folio) + folio_size(locked_folio)));
 
        if (should_nocow(inode, start, end)) {
-               ret = run_delalloc_nocow(inode, page_folio(locked_page), start,
-                                        end);
+               ret = run_delalloc_nocow(inode, locked_folio, start, end);
                goto out;
        }
 
        if (btrfs_inode_can_compress(inode) &&
            inode_need_compress(inode, start, end) &&
-           run_delalloc_compressed(inode, page_folio(locked_page), start, end,
-                                   wbc))
+           run_delalloc_compressed(inode, locked_folio, start, end, wbc))
                return 1;
 
        if (zoned)
-               ret = run_delalloc_cow(inode, page_folio(locked_page), start,
-                                      end, wbc, true);
+               ret = run_delalloc_cow(inode, locked_folio, start, end, wbc,
+                                      true);
        else
-               ret = cow_file_range(inode, page_folio(locked_page), start, end,
-                                    NULL, false, false);
+               ret = cow_file_range(inode, locked_folio, start, end, NULL,
+                                    false, false);
 
 out:
        if (ret < 0)
-               btrfs_cleanup_ordered_extents(inode, page_folio(locked_page),
-                                             start, end - start + 1);
+               btrfs_cleanup_ordered_extents(inode, locked_folio, start,
+                                             end - start + 1);
        return ret;
 }