2001 FREENIX Track Technical Program - Abstract
User-Level Extensibility in the Mona File System
Paul W. Schermerhorn, Robert J. Minerick, Peter Rijks, and Vincent W. Freeh, University of Notre Dame
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