This paper shows how to use full-path indexing in a file system to realize fast directory scans, writes, and renames. The paper introduces a range-rename mechanism for efficient key-space changes in a write-optimized dictionary. This mechanism is encapsulated in the key-value-store API and simplifies the overall design of the file system.
We implemented this mechanism in BetrFS, an in-kernel, local file system for Linux. This new version, BetrFS 0.4, performs recursive greps 1.5x faster and random writes 1.2x faster than BetrFS 0.3, but renames are competitive with standard, indirection-based file systems for a range of sizes. BetrFS 0.4 outperforms relative-path file systems such as BetrFS 0.3 as well as traditional file systems such as ext4, XFS, and ZFS across a variety of workloads.