Trapfs - an automounter on the cheap
Trapfs is derived from ramfs; by itself, it implements a simple, memory-based filesystem. A user-space process can create files, directories, device nodes, etc. in a trapfs filesystem, and everything will work as expected. There is one additional little twist, however: a trapfs filesystem can be mounted with the location of a special helper program given as a parameter. Whenever an attempt is made to look up a nonexistent file, the helper program is invoked and given a chance to cause that file to exist. When the helper exits, trapfs will return whatever the helper left behind to the original caller.
So, if you want to implement an automounter, you just set up a trapfs filesystem with a little script which can figure out which remote filesystem to mount in response to a lookup request. The task can be done with a screenfull of commands - especially if security is not a big concern. Of course, there are some little details (such as unmounting idle filesystems) which are left as an exercise for the reader, but the basic idea is straightforward.
Another possibility is to use trapfs to create a devfs-style device filesystem. The helper program responds to lookup requests by seeing if an appropriate device node can be created.
Whether trapfs will prove useful for real-world tasks remains to be seen.
It could have a role, however, in the creation of simple, dynamic
filesystems in cases where a more complete solution (using FUSE, for example) is more work than is
justified by the task. Unless there are major objections, Adam plans to
try to get trapfs merged in the relatively near future.
| Index entries for this article | |
|---|---|
| Kernel | Automounter |
| Kernel | Filesystems |
| Kernel | Trapfs |
