filesystem metadriver (sample task to undertake *now*)

Fare Rideau rideau@nef.ens.fr
Wed, 26 Nov 1997 23:58:28 +0100 (MET)


Dear Tunesmiths,
  (yeah, this word by Jerry sounds better than Tunesers!)
Talking about tasks that can be undertaken even before a grand unified
framework is developped, here is one:

*** write a file-system description language to define a layout
and allocation policy tactics, and write a program that processes
it and dumps C code for a FS driver ***

To begin with, produce C code for a library that can be linked to a
slightly modified "ls" code (in GNU fileutils, or take DOS utilities
that allow to access ext2 partitions) to read/write a partition from
userland (a sample fs-in-a-file can be done using losetup(8) under Linux)

a read-only Linux FS driver can come next. A read-write driver will
require additional block-allocation policy info to be supplied or guessed.

a kernel driver is more difficult, because it must release memory ASAP,
and writes need be lock-aware and be committed in the right order (to

The description language could be written as a set of Scheme macros,
and/or as a GUILE syntax...

Interesting filesystems to test the concept would be UFS
(the most used driver on free and commercial BSDish unices),
for which there isn't a satisfying Linux driver (despite my patches);
and/or the IRIX XFS, which I was told designed for high-performance.

Before to begin coding, it would we good to search bibliographical
references for similar works. For instance, the MIT Exokernel guys
are known to have developped some kind of downloadable kernel support
for filesystems based on some kind of layout description.
Proceedings of SOSP and DSL conferences should be examined particularly. 

Rationale: this would be the basis for actual filesystem drivers in Tunes,
and would prove the interest of declarative programming and metaprogramming
in the system area. It will also be a direct benefit to the whole
free-software community, not just Tunes, by making porting filesystems
a triffle. Also, a declarative language will make experimenting with
new FS concepts and allocation policies a triffle, and ensure checkable
consistency of the driver (as compared to current drivers that are
potentially full of bugs, where small changes in layout or programming
interface must be propagated everywhere by hand, introducing yet more bugs).


This was just an idea among others.
If some of you know professors in academic positions,
that's an idea of a summer project they could lead...

== Faré -=- (FR) François-René Rideau -=- (VN) Уng-Vû Bân -=- rideau@ens.fr ==
Join a project for a free reflective computing system! | 6 rue Augustin Thierry
TUNES is a Useful, Not Expedient System.               | 75019 PARIS     FRANCE
http://www.eleves.ens.fr:8080/home/rideau/Tunes/ -=- Reflection&Cybernethics ==