A file system that will record version numbers for files each time they are modified. That is, it will record the number of times a file got modified. It may or may not keep backup copies of some older versions of the file.
An alternative way would be to allow the user to set (via similar mechanisms as with Expirefs ) the explicit version of the file. The actual version information could be stored in one of the inode fields in the ``dummy'' file system, and maintained by Statefs.
File versions are very useful. For example, when using replicated file systems, it is often not enough to compare file sizes and dates as a method of ensuring file equivalence. A true file version number, could be a much more efficient and reliable method to tell that, for example, one binary of emacs is for version 19.33, and another is for version 19.34. For an expanded discussion on file equivalence in a replicated environment, see [Zadok93a].
A special use for Versionfs would be a file system that is used by multiple software developers to manage source files in a large software project. Such a file system could remove the need to use tools such as RCS or CVS.
Another possible feature of Versionfs might be to change the behavior of unlink() such that when a file is removed, a previous version of it is being placed instead. Only when the oldest version of the file is removed, does the file get unlinked from the underlying file system.