Commit 2109901d authored by Gao Xiang's avatar Gao Xiang

erofs: update documentation

- Refine highlights for main features;

- Add multi-reference pclusters and fragment description.
Signed-off-by: default avatarGao Xiang <hsiangkao@linux.alibaba.com>
Reviewed-by: default avatarYue Hu <huyue2@coolpad.com>
Reviewed-by: default avatarChao Yu <chao@kernel.org>
Link: https://lore.kernel.org/r/20221130095605.4656-1-hsiangkao@linux.alibaba.com
parent 27f2a2dc
...@@ -30,12 +30,18 @@ It is implemented to be a better choice for the following scenarios: ...@@ -30,12 +30,18 @@ It is implemented to be a better choice for the following scenarios:
especially for those embedded devices with limited memory and high-density especially for those embedded devices with limited memory and high-density
hosts with numerous containers. hosts with numerous containers.
Here is the main features of EROFS: Here are the main features of EROFS:
- Little endian on-disk design; - Little endian on-disk design;
- 4KiB block size and 32-bit block addresses, therefore 16TiB address space - Block-based distribution and file-based distribution over fscache are
at most for now; supported;
- Support multiple devices to refer to external blobs, which can be used
for container images;
- 4KiB block size and 32-bit block addresses for each device, therefore
16TiB address space at most for now;
- Two inode layouts for different requirements: - Two inode layouts for different requirements:
...@@ -50,28 +56,29 @@ Here is the main features of EROFS: ...@@ -50,28 +56,29 @@ Here is the main features of EROFS:
Metadata reserved 8 bytes 18 bytes Metadata reserved 8 bytes 18 bytes
===================== ============ ====================================== ===================== ============ ======================================
- Metadata and data could be mixed as an option; - Support extended attributes as an option;
- Support extended attributes (xattrs) as an option;
- Support tailpacking data and xattr inline compared to byte-addressed - Support POSIX.1e ACLs by using extended attributes;
unaligned metadata or smaller block size alternatives;
- Support POSIX.1e ACLs by using xattrs;
- Support transparent data compression as an option: - Support transparent data compression as an option:
LZ4 and MicroLZMA algorithms can be used on a per-file basis; In addition, LZ4 and MicroLZMA algorithms can be used on a per-file basis; In addition,
inplace decompression is also supported to avoid bounce compressed buffers inplace decompression is also supported to avoid bounce compressed buffers
and page cache thrashing. and page cache thrashing.
- Support chunk-based data deduplication and rolling-hash compressed data
deduplication;
- Support tailpacking inline compared to byte-addressed unaligned metadata
or smaller block size alternatives;
- Support merging tail-end data into a special inode as fragments.
- Support direct I/O on uncompressed files to avoid double caching for loop - Support direct I/O on uncompressed files to avoid double caching for loop
devices; devices;
- Support FSDAX on uncompressed images for secure containers and ramdisks in - Support FSDAX on uncompressed images for secure containers and ramdisks in
order to get rid of unnecessary page cache. order to get rid of unnecessary page cache.
- Support multiple devices for multi blob container images;
- Support file-based on-demand loading with the Fscache infrastructure. - Support file-based on-demand loading with the Fscache infrastructure.
The following git tree provides the file system user-space tools under The following git tree provides the file system user-space tools under
...@@ -259,7 +266,7 @@ By the way, chunk-based files are all uncompressed for now. ...@@ -259,7 +266,7 @@ By the way, chunk-based files are all uncompressed for now.
Data compression Data compression
---------------- ----------------
EROFS implements LZ4 fixed-sized output compression which generates fixed-sized EROFS implements fixed-sized output compression which generates fixed-sized
compressed data blocks from variable-sized input in contrast to other existing compressed data blocks from variable-sized input in contrast to other existing
fixed-sized input solutions. Relatively higher compression ratios can be gotten fixed-sized input solutions. Relatively higher compression ratios can be gotten
by using fixed-sized output compression since nowadays popular data compression by using fixed-sized output compression since nowadays popular data compression
...@@ -314,3 +321,6 @@ to understand its delta0 is constantly 1, as illustrated below:: ...@@ -314,3 +321,6 @@ to understand its delta0 is constantly 1, as illustrated below::
If another HEAD follows a HEAD lcluster, there is no room to record CBLKCNT, If another HEAD follows a HEAD lcluster, there is no room to record CBLKCNT,
but it's easy to know the size of such pcluster is 1 lcluster as well. but it's easy to know the size of such pcluster is 1 lcluster as well.
Since Linux v6.1, each pcluster can be used for multiple variable-sized extents,
therefore it can be used for compressed data deduplication.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment