btrfs: add set_folio_extent_mapped() helper
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Thu, 14 Dec 2023 16:13:29 +0000 (16:13 +0000)
committerDavid Sterba <dsterba@suse.com>
Mon, 4 Mar 2024 15:24:45 +0000 (16:24 +0100)
Turn set_page_extent_mapped() into a wrapper around this version.
Saves a call to compound_head() for callers who already have a folio
and removes a couple of users of page->mapping.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
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

index b542bd1816df6f0e2edb295a81107354305f8dfe..cff67d03424df90304932aadd2d500cc370abccd 100644 (file)
@@ -930,17 +930,21 @@ static int attach_extent_buffer_folio(struct extent_buffer *eb,
 
 int set_page_extent_mapped(struct page *page)
 {
-       struct folio *folio = page_folio(page);
+       return set_folio_extent_mapped(page_folio(page));
+}
+
+int set_folio_extent_mapped(struct folio *folio)
+{
        struct btrfs_fs_info *fs_info;
 
-       ASSERT(page->mapping);
+       ASSERT(folio->mapping);
 
        if (folio_test_private(folio))
                return 0;
 
-       fs_info = btrfs_sb(page->mapping->host->i_sb);
+       fs_info = btrfs_sb(folio->mapping->host->i_sb);
 
-       if (btrfs_is_subpage(fs_info, page->mapping))
+       if (btrfs_is_subpage(fs_info, folio->mapping))
                return btrfs_attach_subpage(fs_info, folio, BTRFS_SUBPAGE_DATA);
 
        folio_attach_private(folio, (void *)EXTENT_FOLIO_PRIVATE);
index 3cbececc8c6ddd4544de0e75d5bdc3461a4adedf..4437607f2b0601cb65247abdd4a0a65b37f17133 100644 (file)
@@ -229,6 +229,7 @@ int btree_write_cache_pages(struct address_space *mapping,
 void extent_readahead(struct readahead_control *rac);
 int extent_fiemap(struct btrfs_inode *inode, struct fiemap_extent_info *fieinfo,
                  u64 start, u64 len);
+int set_folio_extent_mapped(struct folio *folio);
 int set_page_extent_mapped(struct page *page);
 void clear_page_extent_mapped(struct page *page);