Some of the goals of the Reiser4 file system are: •
Atomicity (filesystem operations either complete, or they do not, and they do not corrupt due to partially occurring) • Different transaction models: journaling, write-anywhere (
copy-on-write), hybrid transaction model • More efficient
journaling through wandering logs • More efficient support of small files, in terms of disk space and speed through
block suballocation • Liquid items (or virtual keys) – a special format of records in the storage tree, which completely resolves the problem of
internal fragmentation • EOTTL (extents on the twig level) – fully balanced storage tree, meaning that all paths to objects are of equal length • Faster handling of
directories with large numbers of files • Transparent compression:
Lempel-Ziv-Oberhumer (LZO),
zlib • Plugin infrastructure • Dynamically optimized disk-layout through
allocate-on-flush (also called delayed allocation in
XFS) • Delayed actions (tree balancing, compression, block allocation, local defragmentation) • R and D (Rare and Dense) caches, synchronized at commit time •
Transactions support for user-defined integrity •
Metadata and inline-data
checksums • Mirrors and failover • Precise
discard support with delayed issuing of discard requests for SSD devices Some of the more advanced Reiser4 features (such as user-defined transactions) are also not available because of a lack of a
VFS API for them. At present Reiser4 lacks a few standard file system features, such as an online repacker (similar to the
defragmentation utilities provided with other file systems). The creators of Reiser4 say they will implement these later, or sooner if someone pays them to do so. == Performance ==