btrfs: convert can_finish_ordered_extent() to use a folio
authorJosef Bacik <josef@toxicpanda.com>
Wed, 24 Jul 2024 19:49:47 +0000 (15:49 -0400)
committerDavid Sterba <dsterba@suse.com>
Tue, 10 Sep 2024 14:51:14 +0000 (16:51 +0200)
Pass in a folio instead, and use a folio instead of a page.

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/ordered-data.c

index 82a6839..760a375 100644 (file)
@@ -332,7 +332,7 @@ static void finish_ordered_fn(struct btrfs_work *work)
 }
 
 static bool can_finish_ordered_extent(struct btrfs_ordered_extent *ordered,
-                                     struct page *page, u64 file_offset,
+                                     struct folio *folio, u64 file_offset,
                                      u64 len, bool uptodate)
 {
        struct btrfs_inode *inode = ordered->inode;
@@ -340,10 +340,10 @@ static bool can_finish_ordered_extent(struct btrfs_ordered_extent *ordered,
 
        lockdep_assert_held(&inode->ordered_tree_lock);
 
-       if (page) {
-               ASSERT(page->mapping);
-               ASSERT(page_offset(page) <= file_offset);
-               ASSERT(file_offset + len <= page_offset(page) + PAGE_SIZE);
+       if (folio) {
+               ASSERT(folio->mapping);
+               ASSERT(folio_pos(folio) <= file_offset);
+               ASSERT(file_offset + len <= folio_pos(folio) + folio_size(folio));
 
                /*
                 * Ordered (Private2) bit indicates whether we still have
@@ -351,10 +351,9 @@ static bool can_finish_ordered_extent(struct btrfs_ordered_extent *ordered,
                 *
                 * If there's no such bit, we need to skip to next range.
                 */
-               if (!btrfs_folio_test_ordered(fs_info, page_folio(page),
-                                             file_offset, len))
+               if (!btrfs_folio_test_ordered(fs_info, folio, file_offset, len))
                        return false;
-               btrfs_folio_clear_ordered(fs_info, page_folio(page), file_offset, len);
+               btrfs_folio_clear_ordered(fs_info, folio, file_offset, len);
        }
 
        /* Now we're fine to update the accounting. */
@@ -408,7 +407,8 @@ void btrfs_finish_ordered_extent(struct btrfs_ordered_extent *ordered,
        trace_btrfs_finish_ordered_extent(inode, file_offset, len, uptodate);
 
        spin_lock_irqsave(&inode->ordered_tree_lock, flags);
-       ret = can_finish_ordered_extent(ordered, page, file_offset, len, uptodate);
+       ret = can_finish_ordered_extent(ordered, page_folio(page), file_offset,
+                                       len, uptodate);
        spin_unlock_irqrestore(&inode->ordered_tree_lock, flags);
 
        /*
@@ -524,7 +524,8 @@ void btrfs_mark_ordered_io_finished(struct btrfs_inode *inode,
                ASSERT(end + 1 - cur < U32_MAX);
                len = end + 1 - cur;
 
-               if (can_finish_ordered_extent(entry, page, cur, len, uptodate)) {
+               if (can_finish_ordered_extent(entry, page_folio(page), cur, len,
+                                             uptodate)) {
                        spin_unlock_irqrestore(&inode->ordered_tree_lock, flags);
                        btrfs_queue_ordered_fn(entry);
                        spin_lock_irqsave(&inode->ordered_tree_lock, flags);