USENIX Conference Policies
User-Level Extensibility in the Mona File System
An extensible file system raises the level of file abstraction which provides benefits to both the end-user and programmer. The Modify-on-Access file system provides safe and simple user-defined extensibility through transformations, which are modular operations on input and output streams. A user inserts transformations into input and output streams, which modify the data accessed. Untrusted transformations execute in user space for safety. Performance of user-level transformations, although much slower than that of in-kernel transformations, is comparable to other user-level approaches, such as pipes.
This paper presents several interesting user-level transformations. For example, the command transformation executes a shell script whose input and output are routed from/to the file system. A file guarded by the ftp transformation is a ``mount'' point to an FTP server. The php transformation creates dynamic documents from PHP source when read. A file written to a sound device that is guarded by the mp3 transformation is decoded on the fly, in the file system, before reaching the sound device.
Mona is a novel approach to file system extensibility that provides heretofore unseen flexibility. Mona is fine-grained: a user defines actions on a per-file basis. It is modular: transformations can be stacked upon one another. Mona supports two classes of transformations: kernel-resident and user-level.
author = {Paul W. Schermerhorn and Robert J. Minerick and Peter Rijks and Vincent W. Freeh},
title = {{User-Level} Extensibility in the Mona File System},
booktitle = {2001 USENIX Annual Technical Conference (USENIX ATC 01)},
year = {2001},
address = {Boston, MA},
url = {https://www.usenix.org/conference/2001-usenix-annual-technical-conference/user-level-extensibility-mona-file-system},
publisher = {USENIX Association},
month = jun
}