Stackable file systems can provide extensible file system functionality with
minimal performance overhead and development cost. However, previous
approaches provide only limited functionality. In particular, they do not
support size-changing algorithms (SCAs), which are important and useful for
many applications such as compression and encryption. We propose fast
indexing, a technique for efficient support of SCAs in stackable file
systems. Fast indexing provides a page mapping between file system layers
in a way that can be used with any SCA. We use index files to store this
mapping. Index files are designed to be recoverable if lost and add less
than 0.1% disk space overhead. We have implemented fast indexing using
portable stackable templates, and we have used this system to build several
example file systems with SCAs. We demonstrate that fast index files have
low overhead for typical user workloads such as large compilations, only
2.3% over other stacked file systems and 4.7% over non-stackable file
systems. Our system can deliver better performance with SCAs than
user-level applications, as much as five times faster.