rs9p 0.4.0

Filesystems library using 9P2000.L protocol, an extended variant of 9P from Plan 9
Documentation

rs9p

Tokio-based asynchronous filesystems library using 9P2000.L protocol, an extended variant of 9P from Plan 9.

unpfs

unpfs is the reference implementation of a file server which exports your filesystem. You can build unpfs with the following commands below:

cargo build -p unpfs --verbose --release

and run unpfs with the following command to export /exportdir:

# TCP
cargo run --release -- 'tcp!0.0.0.0!564' /exportdir

# Unix domain socket:
#  port number is a suffix to the unix domain socket
#  'unix!/tmp/unpfs-socket!n' creates `/tmp/unpfs-socket:n`
cargo run --release -- 'unix!/tmp/unpfs-socket!0' /exportdir

# With maximum depth limit (prevents infinite recursion)
cargo run --release -- --max-depth 100 'tcp!0.0.0.0!564' /exportdir

Important: If you mount the filesystem inside its own export directory, you can create infinite recursion (e.g., exporting /home/user and mounting at /home/user/mnt creates /home/user/mnt/mnt/mnt/...). Use the --max-depth option to prevent this:

cargo run --release -- --max-depth 50 'tcp!0.0.0.0!564' /exportdir

You are now ready to import/mount the remote filesystem. Let's mount it at /mountdir:

# TCP
sudo mount -t 9p -o version=9p2000.L,trans=tcp,port=564,uname=$USER 127.0.0.1 /mountdir
# Unix domain socket
sudo mount -t 9p -o version=9p2000.L,trans=unix,uname=$USER /tmp/unpfs-socket:0 /mountdir
Mount option Value
version must be "9p2000.L"
trans an alternative v9fs transport. "tcp" or "unix"
port port to connect to on the remote server
uname user name to attempt mount as on the remote server

See v9fs documentation for more details.

License

rs9p is distributed under the BSD 3-Clause License. See LICENSE for details.