USENIX Association Proceedings of the FREENIX Track : 2001 USENIX Annual

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 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]  Michael N. Nelson,et al.  Extensible file systems in spring , 1994, SOSP '93.

[2]  Erez Zadok,et al.  Extending File Systems Using Stackable Templates , 1999, USENIX Annual Technical Conference, General Track.

[3]  Vincent W. Freeh,et al.  The modify-on-access file system: An Extensible Linux File System , 1999 .

[4]  Hai Jin,et al.  Active Disks: Programming Model, Algorithms and Evaluation , 2002 .

[5]  Brian N. Bershad,et al.  Extensibility safety and performance in the SPIN operating system , 1995, SOSP.

[6]  Robert Magnus,et al.  Linux Kernel Internals , 1996 .

[7]  Dennis M. Ritchie,et al.  A stream input-output system , 1990 .

[8]  David S. H. Rosenthal,et al.  Evolving the Vnode interface , 1990, USENIX Summer.

[9]  R. P. Kendall,et al.  The Modify-on-Access File System , 1998 .

[10]  Maurice J. Bach The Design of the UNIX Operating System , 1986 .

[11]  John S. Heidemann,et al.  File-system development with stackable layers , 1994, TOCS.

[12]  Brian N. Bershad,et al.  Watchdogs - Extending the UNIX File System , 1988, Comput. Syst..

[13]  Robert Grimm,et al.  Application performance and flexibility on exokernel systems , 1997, SOSP.

[14]  A. David McNab,et al.  BSD Portals for LINUX 2.0 , 1999 .

[15]  Paul W. Schermerhorn,et al.  Streaming extensibility in the Modify-on-Access file system , 2002, J. Syst. Softw..

[16]  Paul J. Leach,et al.  An Extensible I/O System , 1986, USENIX Summer.

[17]  K. Thompson,et al.  The UNIX time-sharing system , 1978 .

[18]  Ken Thompson,et al.  The UNIX time-sharing system , 1974, CACM.

[19]  Robert Wahbe,et al.  Efficient software-based fault isolation , 1994, SOSP '93.