put the xfs xfile abstraction on a diet v3

Christoph Hellwig
2024-01-29T14:35:07Z

Hi all,

this series refactors and simplifies the code in the xfs xfile
abstraction, which is a thing layer on a kernel-use shmem file.

To do this is needs a slighly lower level exports from shmem.c,
which I combined with improving an assert and documentation there.

Now that this series has a fair amount of reviews we also need to
think how we can merge it best. Should the shmem changes be
merged through the xfs tree? Should there be a shared branch?

The series is against Linux 6.8-rc2.

Changes since v2:
- include internal.h in workingset.h to avoid a buildbot warning
- update the usage comment for shmem_get_folio
- improve the xfile_load/store documentation
- don't use highmem for xfiles for real
- only call filemap_check_wb_err to check for errors on the mapping

Changes since v1:
- fix reading i_blocks
- provide wrappers for reading i_size and i_blocks
- update the xfile load/store documentation
- improve a commit message
- use shmem_kernel_file_setup
- add a missing folio unlock in the hwpoison path in xfile_get_page
- fix checking for shmem mappings
- improve I/O error handling (Darrick)
- convert to folios (partially from Darrick)

Diffstat:
Documentation/filesystems/xfs/xfs-online-fsck-design.rst | 25 -
fs/xfs/scrub/rtsummary.c | 6
fs/xfs/scrub/trace.h | 81 ++-
fs/xfs/scrub/xfarray.c | 234 ++++------
fs/xfs/scrub/xfarray.h | 11
fs/xfs/scrub/xfile.c | 345 +++++----------
fs/xfs/scrub/xfile.h | 62 --
include/linux/shmem_fs.h | 6
include/linux/swap.h | 10
mm/filemap.c | 9
mm/internal.h | 4
mm/shmem.c | 37 +
mm/workingset.c | 1
13 files changed, 349 insertions(+), 482 deletions(-)