buffer: add b_folio as an alias of b_page
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Thu, 15 Dec 2022 21:43:51 +0000 (21:43 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 19 Jan 2023 01:12:39 +0000 (17:12 -0800)
Patch series "Start converting buffer_heads to use folios".

I was hoping that filesystems would convert from buffer_heads to iomap,
but that's not happening particularly quickly.  So the buffer_head
infrastructure needs to be converted from being page-based to being
folio-based.

This patch (of 12):

Buffer heads point to the allocation (ie the folio), not the page.  This
is currently the same thing for all filesystems that use buffer heads, so
this is a safe transitional step.

Link: https://lkml.kernel.org/r/20221215214402.3522366-1-willy@infradead.org
Link: https://lkml.kernel.org/r/20221215214402.3522366-2-willy@infradead.org
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/buffer_head.h

index 33fa5e9..8f14dca 100644 (file)
@@ -61,7 +61,10 @@ typedef void (bh_end_io_t)(struct buffer_head *bh, int uptodate);
 struct buffer_head {
        unsigned long b_state;          /* buffer state bitmap (see above) */
        struct buffer_head *b_this_page;/* circular list of page's buffers */
-       struct page *b_page;            /* the page this bh is mapped to */
+       union {
+               struct page *b_page;    /* the page this bh is mapped to */
+               struct folio *b_folio;  /* the folio this bh is mapped to */
+       };
 
        sector_t b_blocknr;             /* start block number */
        size_t b_size;                  /* size of mapping */