Overview
========

EROFS file-system stands for Enhanced Read-Only File System. Different
from other read-only file systems, it aims to be designed for flexibility,
scalability, but be kept simple and high performance.

It is designed as a better filesystem solution for the following scenarios:
 - read-only storage media or

 - part of a fully trusted read-only solution, which means it needs to be
   immutable and bit-for-bit identical to the official golden image for
   their releases due to security and other considerations and

 - hope to save some extra storage space with guaranteed end-to-end performance
   by using reduced metadata and transparent file compression, especially
   for those embedded devices with limited memory (ex, smartphone);

Here is the main features of EROFS:
 - Little endian on-disk design;

 - Currently 4KB block size (nobh) and therefore maximum 16TB address space;

 - Metadata & data could be mixed by design;

 - 2 inode versions for different requirements:
                          v1            v2
   Inode metadata size:   32 bytes      64 bytes
   Max file size:         4 GB          16 EB (also limited by max. vol size)
   Max uids/gids:         65536         4294967296
   File creation time:    no            yes (64 + 32-bit timestamp)
   Max hardlinks:         65536         4294967296
   Metadata reserved:     4 bytes       14 bytes

 - Support extended attributes (xattrs) as an option;

 - Support xattr inline and tail-end data inline for all files;

 - Support POSIX.1e ACLs by using xattrs;

 - Support transparent file compression as an option:
   LZ4 algorithm with 4 KB fixed-output compression for high performance;

The following git tree provides the file system user-space tools under
development (ex, formatting tool mkfs.erofs):
>> git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git

Bugs and patches are welcome, please kindly help us and send to the following
linux-erofs mailing list:
>> linux-erofs mailing list   <linux-erofs@lists.ozlabs.org>

Note that EROFS is still working in progress as a Linux staging driver,
Cc the staging mailing list as well is highly recommended:
>> Linux Driver Project Developer List <devel@driverdev.osuosl.org>

Mount options
=============

fault_injection=%d     Enable fault injection in all supported types with
                       specified injection rate. Supported injection type:
                       Type_Name                Type_Value
                       FAULT_KMALLOC            0x000000001
(no)user_xattr         Setup Extended User Attributes. Note: xattr is enabled
                       by default if CONFIG_EROFS_FS_XATTR is selected.
(no)acl                Setup POSIX Access Control List. Note: acl is enabled
                       by default if CONFIG_EROFS_FS_POSIX_ACL is selected.

On-disk details
===============

Summary
-------
Different from other read-only file systems, an EROFS volume is designed
to be as simple as possible:

                                |-> aligned with the block size
   ____________________________________________________________
  | |SB| | ... | Metadata | ... | Data | Metadata | ... | Data |
  |_|__|_|_____|__________|_____|______|__________|_____|______|
  0 +1K

All data areas should be aligned with the block size, but metadata areas
may not. All metadatas can be now observed in two different spaces (views):
 1. Inode metadata space
    Each valid inode should be aligned with an inode slot, which is a fixed
    value (32 bytes) and designed to be kept in line with v1 inode size.

    Each inode can be directly found with the following formula:
         inode offset = meta_blkaddr * block_size + 32 * nid

                                |-> aligned with 8B
                                           |-> followed closely
    + meta_blkaddr blocks                                      |-> another slot
     _____________________________________________________________________
    |  ...   | inode |  xattrs  | extents  | data inline | ... | inode ...
    |________|_______|(optional)|(optional)|__(optional)_|_____|__________
             |-> aligned with the inode slot size
                  .                   .
                .                         .
              .                              .
            .                                    .
          .                                         .
        .                                              .
      .____________________________________________________|-> aligned with 4B
      | xattr_ibody_header | shared xattrs | inline xattrs |
      |____________________|_______________|_______________|
      |->    12 bytes    <-|->x * 4 bytes<-|               .
                          .                .                 .
                    .                      .                   .
               .                           .                     .
           ._______________________________.______________________.
           | id | id | id | id |  ... | id | ent | ... | ent| ... |
           |____|____|____|____|______|____|_____|_____|____|_____|
                                           |-> aligned with 4B
                                                       |-> aligned with 4B

    Inode could be 32 or 64 bytes, which can be distinguished from a common
    field which all inode versions have -- i_advise:

        __________________               __________________
       |     i_advise     |             |     i_advise     |
       |__________________|             |__________________|
       |        ...       |             |        ...       |
       |                  |             |                  |
       |__________________| 32 bytes    |                  |
                                        |                  |
                                        |__________________| 64 bytes

    Xattrs, extents, data inline are followed by the corresponding inode with
    proper alignes, and they could be optional for different data mappings,
    _currently_ there are totally 3 valid data mappings supported:

     1) flat file data without data inline (no extent);
     2) fixed-output size data compression (must have extents);
     3) flat file data with tail-end data inline (no extent);

    The size of the optional xattrs is indicated by i_xattr_count in inode
    header. Large xattrs or xattrs shared by many different files can be
    stored in shared xattrs metadata rather than inlined right after inode.

 2. Shared xattrs metadata space
    Shared xattrs space is similar to the above inode space, started with
    a specific block indicated by xattr_blkaddr, organized one by one with
    proper align.

    Each share xattr can also be directly found by the following formula:
         xattr offset = xattr_blkaddr * block_size + 4 * xattr_id

                           |-> aligned by  4 bytes
    + xattr_blkaddr blocks                     |-> aligned with 4 bytes
     _________________________________________________________________________
    |  ...   | xattr_entry |  xattr data | ... |  xattr_entry | xattr data  ...
    |________|_____________|_____________|_____|______________|_______________

Directories
-----------
All directories are now organized in a compact on-disk format. Note that
each directory block is divided into index and name areas in order to support
random file lookup, and all directory entries are _strictly_ recorded in
alphabetical order in order to support improved prefix binary search
algorithm (could refer to the related source code).

                 ___________________________
                /                           |
               /              ______________|________________
              /              /              | nameoff1       | nameoffN-1
 ____________.______________._______________v________________v__________
| dirent | dirent | ... | dirent | filename | filename | ... | filename |
|___.0___|____1___|_____|___N-1__|____0_____|____1_____|_____|___N-1____|
     \                           ^
      \                          |                           * could have
       \                         |                             trailing '\0'
        \________________________| nameoff0

                             Directory block

Note that apart from the offset of the first filename, nameoff0 also indicates
the total number of directory entries in this block since it is no need to
introduce another on-disk field at all.

Compression
-----------
Currently, EROFS supports 4KB fixed-output clustersize transparent file
compression, as illustrated below:

         |---- Variant-Length Extent ----|-------- VLE --------|----- VLE -----
         clusterofs                      clusterofs            clusterofs
         |                               |                     |   logical data
_________v_______________________________v_____________________v_______________
... |    .        |             |        .    |             |  .          | ...
____|____.________|_____________|________.____|_____________|__.__________|____
    |-> cluster <-|-> cluster <-|-> cluster <-|-> cluster <-|-> cluster <-|
         size          size          size          size          size
          .                             .                .                   .
           .                       .               .                  .
            .                  .              .                .
      _______._____________._____________._____________._____________________
         ... |             |             |             | ... physical data
      _______|_____________|_____________|_____________|_____________________
             |-> cluster <-|-> cluster <-|-> cluster <-|
                  size          size          size

Currently each on-disk physical cluster can contain 4KB (un)compressed data
at most. For each logical cluster, there is a corresponding on-disk index to
describe its cluster type, physical cluster address, etc.

See "struct z_erofs_vle_decompressed_index" in erofs_fs.h for more details.

