A File System Component Compiler

Erez Zadokezk AT cs.columbia.edu

Computer Science Department
Columbia University
New York, NY 10027

Abstract:

File System development is a difficult and time consuming task, the results
of which are rarely portable across operating systems. Several proposals to
improve the vnode interface to allow for more flexible file system design and
implementation have been made in recent years, but none is used in practice
because they require costly fundamental changes to kernel interfaces, only
operating systems vendors can make those changes, are still non-portable,
tend to degrade performance, and do not appear to provide immediate return
on such an investment.

This proposal advocates a language for describing file systems, called FiST.
The associated translator can generate portable C code -- kernel resident
or not -- that implements the described file system. No kernel source code
is needed and no existing vnode interface must change. The performance of
the file systems automatically generated by FiST can be within a few percent
of comparable hand-written file systems. The main benefits to automation are
that development and maintenance costs are greatly reduced, and that it
becomes practical to prototype, implement, test, debug, and compose a vastly
larger set of such file systems with different properties.

The proposed thesis will describe the language and its translator, use it to
implement a few file systems on more than one platform, and evaluate the
performance of the automatically generated code.