Filenames integrity

dufrp@oricom.ca dufrp@oricom.ca
Tue, 26 Jan 1999 02:57:03 -0500 (EST)


One could say that there is no filenames in Tunes because Tunes will use orthogonal
persistence. Well, but the concept of an object that holds information for others will
always exist. Tril suggests not using names but I don't like that, because I need to
put names on things because that way it is easier to think about them.

Some hate filesystems because of problems of integrity that comes with current
filesystems. Problems like files that don't exist anymore or that have simply move.

The reason I write this message is to say that these problems would almost vanishes
if the filesystem was some sort of database and that it would make integrity test that
exist in database world.

Here an example of how such a system differ from current DOS filesystem:

delete phone.dat
phone.dat is used by:
  phone.exe
  paulcont.exe
    that is itself used by:
      paulmana.exe
To delete phone.dat I must also delete all this files, really delete (y/n)? n

ren phone.dat paulfon.dat
  phone.dat (Unique ID 346535643) have been renamed paulfon.dat
  the text files phone.c and phone.doc had all their references to phone.dat replaced
  by the new name paulfon.dat
  
Here I was supposing that a unique id existed for the file, so that it can change of name
or of directory without having to change any reference by this unique number.
I suppose there is others solutions than unique numbers, but that's simple.
That way the rename command in previous example could simply ignore the text files and
the text files could contains name objects that contains the unique ID of the file and when
the editor open the files it ask the filesystem the current filename of file 346535643 and
replace the name objects by the current name (paulfon.dat).

This kind of integrity tests should be also done in a capability system.
By example removing an object could be made impossible as long as capabilities
exist for that object. Maybe Eros and Grail does that but I never read this in their doc.