Subject: [PATCH 00/10] Convert ext2 directory handling to folios

From: "Matthew Wilcox (Oracle)" <[email-masked]>
Date: Thu, 21 Sep 2023 16:05:18 -0400

There are several good reasons for this patchset:

1. In preparation for shrinking struct page to a single pointer, we must
   remove all references to page->mapping and page->index.
2. Remove a number of calls to compound_head(), shrinking the text
   size of the kernel.
3. Support for block size > PAGE_SIZE.  We need to use large folios for
   directories on these filesystems.  To avoid introducing a lot of
   complexity, we ignore that kmap_local can only map a single page
   on a HIGHMEM system, and simply declare that we will not support
   block size > PAGE_SIZE on HIGHMEM systems.
4. ext2 is in some ways the standard example filesystem, and having it
   use the new APIs is important.

The first patch adds a folio version of unmap_and_put_page().  We might
bikeshed on that one for a while, so I'm going to get on a plane soon ;-P

Matthew Wilcox (Oracle) (10):
  highmem: Add folio_release_kmap()
  ext2: Convert ext2_check_page to ext2_check_folio
  ext2: Add ext2_get_folio()
  ext2: Convert ext2_readdir to use a folio
  ext2: Convert ext2_add_link() to use a folio
  ext2: Convert ext2_empty_dir() to use a folio
  ext2: Handle large block size directories in ext2_delete_entry()
  ext2: Convert ext2_unlink() and ext2_rename() to use folios
  ext2: Convert ext2_make_empty() to use a folio
  ext2: Convert ext2_prepare_chunk and ext2_commit_chunk to folios

 fs/ext2/dir.c           | 211 ++++++++++++++++++++--------------------
 fs/ext2/ext2.h          |  18 ++--
 fs/ext2/namei.c         |  32 +++---
 include/linux/highmem.h |  18 +++-
 4 files changed, 146 insertions(+), 133 deletions(-)

-- 
2.40.1

Matthew Wilcox (Oracle) (10):
  highmem: Add folio_release_kmap()
  ext2: Convert ext2_check_page to ext2_check_folio
  ext2: Add ext2_get_folio()
  ext2: Convert ext2_readdir to use a folio
  ext2: Convert ext2_add_link() to use a folio
  ext2: Convert ext2_empty_dir() to use a folio
  ext2: Handle large block size directories in ext2_delete_entry()
  ext2: Convert ext2_unlink() and ext2_rename() to use folios
  ext2: Convert ext2_make_empty() to use a folio
  ext2: Convert ext2_prepare_chunk and ext2_commit_chunk to folios

 fs/ext2/dir.c           | 214 ++++++++++++++++++++--------------------
 fs/ext2/ext2.h          |  23 ++---
 fs/ext2/namei.c         |  32 +++---
 include/linux/highmem.h |  18 +++-
 4 files changed, 148 insertions(+), 139 deletions(-)

-- 
2.40.1