Skip to content

Commit

Permalink
docs: refresh roadmap items (as of 20241015) and new use cases
Browse files Browse the repository at this point in the history
Daily updates.

Signed-off-by: Gao Xiang <xiang@kernel.org>
  • Loading branch information
hsiangkao committed Oct 15, 2024
1 parent 092e3ea commit 0ae9e7b
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 16 deletions.
28 changes: 17 additions & 11 deletions src/features.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@ in-kernel approaches when making technical decisions.
| Multiple compression algorithms | Per-file | N/A | No |
| Data deduplication | Extent-based | No? [^8] | No |
| Extended attribute support | Yes | Yes | Yes |
| File-based distribution | Yes | No | No |
| File-based distribution | Yes [^9] | No | No |
| External data (multi-devices) | Yes | No | No |
| POSIX.1e ACL support | Yes | Yes | No |
| Direct I/O support [^9] | Yes | Yes | No |
| Direct I/O support [^10] | Yes | Yes | No |
| FIEMAP support | Yes | Yes | No |
| FSDAX support | Yes | Yes | No |
| Large folio support [^10] | Yes | No | No |
| Large folio support [^11] | Yes | No | No |

[^1]: 512-byte blocks can be used for tarball data reference.

Expand All @@ -48,8 +48,10 @@ See [Squashfs Binary Format/Inode Table](https://dr-emann.github.io/squashfs/squ

[^5]: Data compression is an optional feature of the EROFS filesystem.
Currently, the supported compression algorithms include [LZ4](https://lz4.org),
[MicroLZMA](https://tukaani.org/xz) (since Linux 5.16), and
[DEFLATE](https://datatracker.ietf.org/doc/html/rfc1951) (since Linux 6.6 LTS).
[MicroLZMA](https://tukaani.org/xz) (since Linux 5.16),
[DEFLATE](https://datatracker.ietf.org/doc/html/rfc1951) (since Linux 6.6 LTS)
and [Zstandard](https://datatracker.ietf.org/doc/html/rfc8878) (since Linux
6.10).

[^6]: The default block size of EROFS is 4 KiB on x86 and x86-64.

Expand All @@ -60,10 +62,14 @@ I/O amplification and extra runtime overhead in resource-limited scenarios.
[^8]: Strictly speaking, EXT4 has a feature named "[shared_blocks](https://lore.kernel.org/r/20201005161941.GF4225@quack2.suse.cz)",
which will prevents applications from writing to the filesystem.

[^9]: For example, `direct I/O` can be used for loop devices backed by unencoded
files on the EROFS filesystem to avoid double caching. `Direct I/O` on encoded
files is almost useless since it should not do ANY caching and thus will kill
the overall performance.
[^9]: EROFS has supported [EROFS over fscache](https://lwn.net/Articles/896140)
(since Linux 5.19, deprecated in Linux 6.12) and [file-backed mounts](https://lwn.net/Articles/990750)
(since Linux 6.12).

[^10]: EROFS supports [large folios for uncompressed files](https://lwn.net/Articles/931794)
since Linux 6.2.
[^10]: For example, `direct I/O` can be used for loop devices backed by
unencoded files on the EROFS filesystem to avoid double caching. `Direct I/O`
on encoded files is almost useless since it should not do ANY caching and thus
will kill the overall performance.

[^11]: EROFS has supported large folios [for uncompressed files](https://lwn.net/Articles/931794)
(since Linux 6.2) and [compressed files](https://git.kernel.org/torvalds/c/e080a26725fb) (since Linux 6.11).
2 changes: 2 additions & 0 deletions src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,11 +89,13 @@ byte-granularity cut points.
[Kata Containers](https://github.com/kata-containers/kata-containers/blob/main/docs/how-to/how-to-use-erofs-build-rootfs.md)

- {octicon}`device-desktop` [Archiso](https://gitlab.archlinux.org/archlinux/archiso/-/merge_requests/82);
[dracut-ng](https://github.com/dracut-ng/dracut-ng/pull/546); [kdump-utils](https://github.com/rhkdump/kdump-utils/pull/33);
[Linglong](https://linglong.dev)

- Distributions: [Alpine Linux](https://pkgs.alpinelinux.org/package/edge/community/x86_64/erofs-utils);
[Arch Linux](https://archlinux.org/packages/extra/x86_64/erofs-utils);
[Azure Linux](https://github.com/microsoft/azurelinux/pull/9971);
[Bottlerocket](https://github.com/bottlerocket-os/twoliter/pull/379);
[Buildroot](https://buildroot.org);
[CentOS Stream](https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/commit/37d0627c30a55e4159f00af2d02b5d64b1dc98e8);
[Chromium OS](https://chromium-review.googlesource.com/c/chromiumos/platform/crosutils/+/5125177);
Expand Down
9 changes: 4 additions & 5 deletions src/roadmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,17 @@

## Linux Kernel

- Enable large folio support for compressed data [\[1\]](https://lore.kernel.org/r/20240305091448.1384242-1-hsiangkao@linux.alibaba.com)
[\[2\]](https://lore.kernel.org/r/20240703120051.3653452-1-hsiangkao@linux.alibaba.com);
- [Enable large folio support for compressed data](https://git.kernel.org/torvalds/c/e080a26725fb);

- [EROFS page cache sharing across different filesystems](https://lwn.net/Articles/984092);

- [File-backed mounts to replace "EROFS over fscache" for container images](https://git.kernel.org/torvalds/c/69a3a0a45a2f);

- Intel QAT/IAA accelerator support;

- Large logical cluster support for smaller compression indexes;

- [Preliminary EROFS Rust in-kernel adaption (EXPERIMENTAL, program for students)](https://summer-ospp.ac.cn/org/prodetail/241920019);

- File-backed mounts to replace "EROFS over fscache" for container images.
- [Preliminary EROFS Rust in-kernel adaption (EXPERIMENTAL, program for students)](https://summer-ospp.ac.cn/org/prodetail/241920019).

## Userspace tools (erofs-utils)

Expand Down

0 comments on commit 0ae9e7b

Please sign in to comment.