Hi Linus, Could you consider this pull request for 7.0-rc1?
In this cycle, inode page cache sharing among filesystems on the same machine is now supported, which is particularly useful for high-density hosts running tens of thousands of containers. In addition, we fully isolate the EROFS core on-disk format from other optional encoded layouts since the core on-disk part is designed to be simple, effective, and secure. Users can use the core format to build unique golden immutable images and import their filesystem trees directly from raw block devices via DMA, page-mapped DAX devices, and/or file-backed mounts without having to worry about unnecessary intrinsic consistency issues found in other generic filesystems by design. However, the full vision is still working in progress and will spend more time to achieve final goals. There are other improvements and bug fixes as usual, as listed below. All commits have been in -next for a while. Note that I have merged the `vfs-7.0.iomap` branch in order to import iomap changes and route the iomap updates properly, so the same merge conflicts are observed as in: https://lore.kernel.org/r/20260206-vfs-iomap-v70-71e0b356ce5c@brauner Thanks, Gao Xiang The following changes since commit 0f61b1860cc3f52aef9036d7235ed1f017632193: Linux 6.19-rc5 (2026-01-11 17:03:14 -1000) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git tags/erofs-for-7.0-rc1 for you to fetch changes up to 1caf50ce4af096d0280d59a31abdd85703cd995c: erofs: fix UAF issue for file-backed mounts w/ directio option (2026-02-06 15:30:35 +0800) ---------------------------------------------------------------- Changes since last update: - Support inode page cache sharing among filesystems - Formally separate optional encoded (aka compressed) inode layouts (and the implementations) from the EROFS core on-disk aligned plain format for future zero-trust security usage - Improve performance by caching the fact that an inode does not have a POSIX ACL - Improve LZ4 decompression error reporting - Enable LZMA by default and promote DEFLATE and Zstandard algorithms out of EXPERIMENTAL status - Switch to inode_set_cached_link() to cache symlink lengths - random bugfixes and minor cleanups ---------------------------------------------------------------- Chao Yu (1): erofs: fix UAF issue for file-backed mounts w/ directio option Christian Brauner (1): Merge patch series "iomap: erofs page cache sharing preliminaries" Ferry Meng (4): erofs: Use %pe format specifier for error pointers erofs: make z_erofs_crypto[] static erofs: remove useless src in erofs_xattr_copy_to_buffer() erofs: avoid some unnecessary #ifdefs Gao Xiang (17): erofs: improve LZ4 error strings erofs: avoid noisy messages for transient -ENOMEM erofs: fix incorrect early exits for invalid metabox-enabled images erofs: fix incorrect early exits in volume label handling erofs: unexport erofs_getxattr() erofs: unexport erofs_xattr_prefix() erofs: tidy up synchronous decompression erofs: add missing documentation about `directio` mount option erofs: tidy up erofs_init_inode_xattrs() Merge branch 'vfs-7.0.iomap' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/vfs/vfs erofs: decouple `struct erofs_anon_fs_type` erofs: mark inodes without acls in erofs_read_inode() erofs: use inode_set_cached_link() erofs: separate plain and compressed filesystems formally erofs: handle end of filesystem properly for file-backed mounts erofs: fix inline data read failure for ztailpacking pclusters erofs: update compression algorithm status Hongbo Li (7): iomap: stash iomap read ctx in the private field of iomap_iter erofs: hold read context in iomap_iter if needed fs: Export alloc_empty_backing_file erofs: add erofs_inode_set_aops helper to set the aops erofs: using domain_id in the safer way erofs: pass inode to trace_erofs_read_folio erofs: support unencoded inodes for page cache share Hongzhen Luo (4): erofs: support user-defined fingerprint name erofs: introduce the page cache share feature erofs: support compressed inodes for page cache share erofs: implement .fadvise for page cache share Yuwen Chen (1): erofs: simplify the code using for_each_set_bit Documentation/ABI/testing/sysfs-fs-erofs | 20 ++- Documentation/filesystems/erofs.rst | 18 ++- fs/erofs/Kconfig | 20 ++- fs/erofs/Makefile | 1 + fs/erofs/data.c | 115 ++++++++----- fs/erofs/decompressor.c | 85 +++++----- fs/erofs/decompressor_crypto.c | 2 +- fs/erofs/decompressor_deflate.c | 1 - fs/erofs/erofs_fs.h | 7 +- fs/erofs/fileio.c | 52 +++--- fs/erofs/fscache.c | 17 +- fs/erofs/inode.c | 80 +++++----- fs/erofs/internal.h | 74 ++++++++- fs/erofs/ishare.c | 206 ++++++++++++++++++++++++ fs/erofs/super.c | 142 ++++++++++++----- fs/erofs/sysfs.c | 9 +- fs/erofs/xattr.c | 266 ++++++++++++++++++++----------- fs/erofs/xattr.h | 40 +---- fs/erofs/zdata.c | 110 +++++++------ fs/file_table.c | 1 + fs/fuse/file.c | 4 +- fs/iomap/buffered-io.c | 6 +- include/linux/iomap.h | 8 +- include/trace/events/erofs.h | 10 +- 24 files changed, 856 insertions(+), 438 deletions(-) create mode 100644 fs/erofs/ishare.c
