[GIT PULL] erofs updates for 6.12-rc1

From: Gao Xiang
Date: Fri Sep 13 2024 - 13:48:59 EST


Hi Linus,

Could you consider this pull request for 6.12-rc1? It's a bit earlier
due to our mid-autumn festival holidays next week.

In this cycle, we'd like to add file-backed mount support, which has
has been a strong requirement for years. It is especially useful when
there are thousands of images running on the same host for containers
and other sandbox use cases, unlike OS image use cases.

Without file-backed mounts, it's hard for container runtimes to manage
and isolate so many unnecessary virtual block devices safely and
efficiently, therefore file-backed mounts are highly preferred.
For EROFS users, ComposeFS [1], containerd, and Android APEXes [2] will
directly benefit from it, and I've seen no risk in implementing it as
a completely immutable filesystem.

The previous experimental feature "EROFS over fscache" is now marked as
deprecated because:

- Fscache is no longer an independent subsystem and has been merged
into netfs, which was somewhat unexpected when it was proposed.

- New HSM "fanotify pre-content hooks" [3] will be landed upstream.
These hooks will replace "EROFS over fscache" in a simpler way, as
EROFS won't be bother with kernel caching anymore. Userspace
programs can also manage their own caching hierarchy more flexibly.

Once the HSM "fanotify pre-content hooks" is landed, I will remove the
fscache backend entirely as an internal dependency cleanup. More
backgrounds are listed in the original patchset [4].

In addition to that, there are bugfixes and cleanups as usual as shown
below. All commits have been in -next and no potential merge conflict
is observed.

Thanks,
Gao Xiang

[1] https://github.com/containers/storage/pull/2039
[2] https://lore.kernel.org/r/CAB=BE-R3wU7hBBaeAXdkDp2kvODxSFWNQtcmc5tCppN5qwdQgw@xxxxxxxxxxxxxx
[3] https://lore.kernel.org/r/cover.1725481503.git.josef@xxxxxxxxxxxxxx
[4] https://lore.kernel.org/r/20240830032840.3783206-1-hsiangkao@xxxxxxxxxxxxxxxxx

The following changes since commit da3ea35007d0af457a0afc87e84fddaebc4e0b63:

Linux 6.11-rc7 (2024-09-08 14:50:28 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git tags/erofs-for-6.12-rc1

for you to fetch changes up to 025497e1d176a9e063d1e60699527e2f3a871935:

erofs: reject inodes with negative i_size (2024-09-12 23:00:09 +0800)

----------------------------------------------------------------
Changes since last update:

- Support file-backed mounts for containers and sandboxes;

- Mark the experimental fscache backend as deprecated;

- Handle overlapped pclusters caused by crafted images properly;

- Fix a failure path which could cause infinite loops in
z_erofs_init_decompressor();

- Get rid of unnecessary NOFAILs;

- Harmless on-disk hardening & minor cleanups.

----------------------------------------------------------------
Chunhai Guo (1):
erofs: allocate more short-lived pages from reserved pool first

Gao Xiang (10):
erofs: fix incorrect symlink detection in fast symlink
erofs: clean up erofs_register_sysfs()
erofs: handle overlapped pclusters out of crafted images properly
erofs: add file-backed mount support
erofs: support unencoded inodes for fileio
erofs: support compressed inodes for fileio
erofs: mark experimental fscache backend deprecated
erofs: sunset unneeded NOFAILs
erofs: restrict pcluster size limitations
erofs: reject inodes with negative i_size

Hongzhen Luo (1):
erofs: simplify erofs_map_blocks_flatmode()

Sandeep Dhavale (1):
erofs: fix error handling in z_erofs_init_decompressor

Yiyang Wu (2):
erofs: use kmemdup_nul in erofs_fill_symlink
erofs: refactor read_inode calling convention

fs/erofs/Kconfig | 22 +++++-
fs/erofs/Makefile | 1 +
fs/erofs/data.c | 109 ++++++++++++++++++---------
fs/erofs/decompressor.c | 2 +-
fs/erofs/erofs_fs.h | 5 +-
fs/erofs/fileio.c | 192 +++++++++++++++++++++++++++++++++++++++++++++++
fs/erofs/inode.c | 138 +++++++++++++++-------------------
fs/erofs/internal.h | 26 ++++++-
fs/erofs/super.c | 80 +++++++++++++-------
fs/erofs/sysfs.c | 30 ++------
fs/erofs/zdata.c | 196 ++++++++++++++++++++++--------------------------
fs/erofs/zmap.c | 42 +++++------
12 files changed, 544 insertions(+), 299 deletions(-)
create mode 100644 fs/erofs/fileio.c