btrfs: convert insert_inline_extent() to use a folio
authorJosef Bacik <josef@toxicpanda.com>
Thu, 25 Jul 2024 00:37:20 +0000 (20:37 -0400)
committerDavid Sterba <dsterba@suse.com>
Tue, 10 Sep 2024 14:51:17 +0000 (16:51 +0200)
We only use a page to copy in the data for the inline extent.  Use a
folio for this instead.

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/inode.c

index aece69dc41ec1b5caa4d0b6a2d0a9048f2c1ad18..cd9290f86a4c8f17b5e368085544121862aba9a9 100644 (file)
@@ -495,7 +495,6 @@ static int insert_inline_extent(struct btrfs_trans_handle *trans,
 {
        struct btrfs_root *root = inode->root;
        struct extent_buffer *leaf;
-       struct page *page = NULL;
        const u32 sectorsize = trans->fs_info->sectorsize;
        char *kaddr;
        unsigned long ptr;
@@ -555,12 +554,16 @@ static int insert_inline_extent(struct btrfs_trans_handle *trans,
                btrfs_set_file_extent_compression(leaf, ei,
                                                  compress_type);
        } else {
-               page = find_get_page(inode->vfs_inode.i_mapping, 0);
+               struct folio *folio;
+
+               folio = __filemap_get_folio(inode->vfs_inode.i_mapping,
+                                           0, 0, 0);
+               ASSERT(!IS_ERR(folio));
                btrfs_set_file_extent_compression(leaf, ei, 0);
-               kaddr = kmap_local_page(page);
+               kaddr = kmap_local_folio(folio, 0);
                write_extent_buffer(leaf, kaddr, ptr, size);
                kunmap_local(kaddr);
-               put_page(page);
+               folio_put(folio);
        }
        btrfs_mark_buffer_dirty(trans, leaf);
        btrfs_release_path(path);