mirror of
https://github.com/torvalds/linux.git
synced 2026-04-29 12:02:35 -04:00
The EROFS on-disk format uses a tiny, plain metadata design that prioritizes performance and minimizes complex inconsistencies against common writable disk filesystems (almost all serious metadata inconsistency cannot happen in well-designed immutable filesystems like EROFS). EROFS deliberately avoids artificial design flaws to eliminate serious security risks from untrusted remote sources by design, although human-made implementation bugs can still happen sometimes. Currently, there is no strict check to prevent compressed inodes, especially LZ4-compressed inodes, from being read in plain filesystems. Starting with erofs-utils 1.0 and Linux 5.3, LZ4_0PADDING sb feature is automatically enabled for LZ4-compressed EROFS images to support in-place decompression. Furthermore, since Linux 5.4 LTS is no longer supported, we no longer need to handle ancient LZ4-compressed EROFS images generated by erofs-utils prior to 1.0. To formally distinguish different filesystem types for improved security: - Use the presence of LZ4_0PADDING or a non-zero `dsb->u1.lz4_max_distance` as a marker for compressed filesystems containing LZ4-compressed inodes only; - For other algorithms, use `dsb->u1.available_compr_algs` bitmap. Note: LZ4_0PADDING has been supported since Linux 5.4 (the first formal kernel version), so exposing it via sysfs is no longer necessary and is now deprecated (but remain it for five more years until 2031): `dsb->u1` has been strictly non-zero for all EROFS images containing compressed inodes starting with erofs-utils v1.3 and it is actually a much better marker for compressed filesystems. Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
50 lines
1.8 KiB
Plaintext
50 lines
1.8 KiB
Plaintext
What: /sys/fs/erofs/features/
|
|
Date: November 2021
|
|
Contact: "Huang Jianan" <huangjianan@oppo.com>
|
|
Description: Shows all enabled kernel features.
|
|
Supported features:
|
|
compr_cfgs, big_pcluster, chunked_file, device_table,
|
|
compr_head2, sb_chksum, ztailpacking, dedupe, fragments,
|
|
48bit, metabox.
|
|
|
|
What: /sys/fs/erofs/<disk>/sync_decompress
|
|
Date: November 2021
|
|
Contact: "Huang Jianan" <huangjianan@oppo.com>
|
|
Description: Control strategy of synchronous decompression. Synchronous
|
|
decompression tries to decompress in the reader thread for
|
|
synchronous reads and small asynchronous reads (<= 12 KiB):
|
|
|
|
- 0 (auto, default): apply to synchronous reads only, but will
|
|
switch to 1 (force on) if any decompression
|
|
request is detected in atomic contexts;
|
|
- 1 (force on): apply to synchronous reads and small
|
|
asynchronous reads;
|
|
- 2 (force off): disable synchronous decompression completely.
|
|
|
|
What: /sys/fs/erofs/<disk>/drop_caches
|
|
Date: November 2024
|
|
Contact: "Guo Chunhai" <guochunhai@vivo.com>
|
|
Description: Writing to this will drop compression-related caches,
|
|
currently used to drop in-memory pclusters and cached
|
|
compressed folios:
|
|
|
|
- 1 : invalidate cached compressed folios
|
|
- 2 : drop in-memory pclusters
|
|
- 3 : drop in-memory pclusters and cached compressed folios
|
|
|
|
What: /sys/fs/erofs/accel
|
|
Date: May 2025
|
|
Contact: "Bo Liu" <liubo03@inspur.com>
|
|
Description: Used to set or show hardware accelerators in effect
|
|
and multiple accelerators are separated by '\n'.
|
|
Supported accelerator(s): qat_deflate.
|
|
Disable all accelerators with an empty string (echo > accel).
|
|
|
|
What: /sys/fs/erofs/<disk>/dir_ra_bytes
|
|
Date: July 2025
|
|
Contact: "Chao Yu" <chao@kernel.org>
|
|
Description: Used to set or show readahead bytes during readdir(), by
|
|
default the value is 16384.
|
|
|
|
- 0: disable readahead.
|