[PATCH v2 0/2] befs: Large file support and a superblock check fix

From: Axel Dörfler

Date: Mon Nov 02 2026 - 09:24:32 EST


Two small befs fixes I originally sent in 2019 [1][2], which never got
picked up. Rebased onto v7.3 and resent as v2.

Patch 1 lets befs serve files larger than 2GiB; the on-disk format and
the implementation already handle 64-bit file sizes, only s_maxbytes was
never raised from the MAX_NON_LFS default.

Patch 2 replaces a superblock consistency check that compares ag_shift
against blocks_per_ag, and therefore emits an error message on basically
every valid volume, with the check the BFS reference implementation
uses. Note that a mismatch now fails the mount, like the other
structural superblock checks do.

In v1, patch 2 just removed the check; the corresponding v1 thread is
"befs: Removed incorrect check" [2].

Changes since v1:
- Patch 1: rebased; sb_set_blocksize() is now checked for failure, so
the assignment moved below the new error path.
- Patch 2: replace the incorrect check with the one from the BFS
reference implementation instead of just removing it, limit ag_shift
to what a block_run can address, and explain what ag_shift and
blocks_per_ag actually mean.

Both patches were build-tested with W=1 and CONFIG_BEFS_DEBUG=y on
x86_64 and i386, and tested by mounting a Haiku volume: the bogus
ag_shift error is gone, and a file larger than 2GiB can now be read
beyond the 2GiB boundary.

[1] https://lore.kernel.org/lkml/?q=s:%22befs:+Allow+file+sizes+beyond+2GiB%22
[2] https://lore.kernel.org/lkml/?q=s:%22befs:+Removed+incorrect+check%22

Axel Dörfler (2):
befs: Allow file sizes beyond 2GiB
befs: Fix allocation group consistency check

fs/befs/linuxvfs.c | 1 +
fs/befs/super.c | 22 +++++++++++++++++-----
2 files changed, 18 insertions(+), 5 deletions(-)


base-commit: c03c1a14507dfaf8b856c2608f9ac216021fc222
--
2.56.0