Readme
Frogger 🐸
Simple file system implementation using the 9P protocol
Bind
The P9 protocol for file systems requires a unique feature called bind , which allows for flexible control over the namespace
(file hierarchy). The bind operation maps a file, directory, or another namespace tree into a new location in the namespace.
It supports three binding modes: Before, After, and Replace. Each mode provides different behaviors for resolving file
lookups when multiple resources are mapped to the same namespace.
Replace Binding: frg bind src mountpoint
This mode replaces whatever was previously mounted at the mountpoint with the src. Only the new src is visible at the specified
mountpoint.
Before binding frg bind - b src mountpoint
In this mode the src is placed before the existing contents of the mountpoint. When a lookup occurs,
a Plan9 file system searches src first, and if the file isn't found there, it searches the original mountpoint .
After binding frg bind - a src mountpoint
This mode appends the src to the mountpoint 's search path. Plan 9 resolves lookups by searching the original
mountpoint first, and if the file isn't found there, it checks the src .
Union directories
Using frg bind - b and frg bind - a , you can create union directories where files from multiple sources appear merged.
For example:
frg bind - b /local/bin /bin
frg bind - a /backup/bin /bin
This setup prioritizes /local/bin , followed by /bin , and finally /backup/bin .
Custom environments
For isolating environments, such as creating chroot-like environments or managing per-process views of namespaces.