Extending the Operating System at the User Level: the Ufo Global File System
Albert Alexandrov, Maximilian Ibel, Klaus Schauser, Chris Scheiman
Proc. Usenix 1997 Annual Technical Conference
http://www.cs.ucsb.edu/research/ufo/97-usenix-ufo.ps
http://www.cs.ucsb.edu/research/ufo
"Ufo is a global file system. It allows users to treat remote files exactly
as if they were local. Currently, Ufo supports file access through the FTP
and HTTP protocols and allows new protocols to be plugged in. Ufo is
implemented entirely at the user level using the Catcher. The Catcher is our
tool for extending the functionality of standard UNIX operating systems
completely at the user level. It works by intercepting selected system calls
at the user level, using the existing /proc interface. The behavior of some
intercepted system calls is then modified to implement new functionality.
This approach does not require any re-linking or re-compilation of existing
applications."
Right now it only works on Solaris 2.5 and 2.6, and the technique used is
*very* operating system specific. But, I downloaded the binary from the
project home page and tried it out (it's only a single binary, and it
self-installs -- very easy), and it works pretty well. It's pretty funky
doing an "ls" on a web server, or doing a direct "grep" of RFC archives.
One of the big advatages I'll get from it is the ability to do regular
expression searches on the filenames of entries in the Internet Drafts
directory.
This utility was written using HTTP/1.0, and doesn't make use of PUT method
functionality, hence HTTP accesses are all read-only. However, I wonder
what would happen if WebDAV functionality were added to Ufo. All of a
sudden, you have a really neat way of adding WebDAV capability to existing
Unix tools (like emacs) without requiring recompilation. Plus, it drives
home the similarities between HTTP/DAV and network file systems, as well as
the quote, "it's the latency, stupid!"
- Jim