User-Level Extensibility in the Mona File System
Paul Schermerhorn, Robert J. Minerick, Peter W. Rijks, Vincent W. Freeh · 2001
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 theftp transformation is a “mount ” point to an FTP server. Thephp transformation creates dynamic documents from PHP source when read. A file written to a sound device that is guarded by themp3 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 finegrained: 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. 1