put the xfs xfile abstraction on a diet v4

Christoph Hellwig
2024-02-19T06:27:38Z

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.

As per the previous discussion this should probably be merged through
the xfs tree.

The series is against current mainline.

Changes since v3:
- improve the shmem_get_folio documentation
- use VM_NORESERVE
- split and reorder the file setup patches
- improve a commit message

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(-)