The FFS3 filesystem supports many advanced features, such
as POSIX compatibility, multiple threads, background
reclaim, fault recovery, transparent decompression,
endian-awareness, wear-leveling, and error-handling.
POSIX
The filesystem supports the standard POSIX functionality (including long filenames, access privileges, random writes, truncation,
and symbolic links) with the following exceptions:
Background reclaim
The FFS3 filesystem stores files and directories as a linked list of extents, which are marked for deletion as they're deleted
or updated. Blocks to be reclaimed are chosen using a simple algorithm that finds the block with the most space to be reclaimed
while keeping level the amount of wear of each individual block. This wear-leveling increases the MTBF (mean time between
failures) of the flash devices, thus increasing their longevity.
Fault recovery
The filesystem has been designed to minimize corruption due to accidental loss-of-power faults. Updates to extent headers
and erase block headers are always executed in carefully scheduled sequences. These sequences allow the recovery of the filesystem's
integrity in the case of data corruption.
Compression/decompression
For fast and efficient compression/decompression, you can use the deflate and inflator utilities, which rely on popular deflate/inflate algorithms.
Flash errors
As flash hardware wears out, its write state-machine may find that it can't write or erase a particular bit cell. When this
happens, the error status is propagated to the flash driver so it can take proper action (i.e., mark the bad area and try
to write/erase in another place).
Endian awareness
The FFS3 filesystem is endian-aware, making it portable across different platforms.