mount.diod(8)

πŸ¦‹ mount.diod(8) β€” the diod mount bestie πŸ¦‹

okay so. this is the <pink>mount.diod</pink> page from the <purple>diod</>... wait, from the diod` manual collection, and it's literally the tool that gets your diod file systems mounted. stay with me, it's gonna slay πŸ’…


✨ NAME ✨

mount.diod β€” mount diod file systems πŸŽ€


✨ SYNOPSIS ✨

mount.diod [OPTIONS] host[:aname] dir [-o options]

✨ DESCRIPTION ✨

okay so mount.diod is the mount utility for the distributed I/O daemon, which is an I/O forwarding service for Linux clusters, built on top of the Linux 9p file system. iconic behavior honestly.

mount.diod does two main things, and it does them:

  1. connect and authenticate to the diod server πŸ”
  2. issue the mount(2) system call with the appropriate mount options πŸ’«

Authentication with the diod server happens in user space. the connected (and authenticated) file descriptor is then passed as a mount option to the kernel 9p file system. yes, the fd is the whole personality. iykyk.

this command requires root to execute the mount(2) system call. like, no cap. you need root.

the 9p file system must support the 9P2000.L protocol variant, e.g. kernel 2.6.38 or above. don't come at it with anything older, it's not the vibe.

the host portion of the mount spec may optionally be supplied in hostlist format, e.g. host1,host2,host3:aname or host[1-3]:aname β€” in which case hosts are tried in order until a successful connection is obtained. πŸƒβ€β™€οΈπŸ’¨ but heads up: post-connect mount errors are immediately fatal. no retries, it's giving no second chances.

if the host portion of the mount spec begins with a forward-slash (/), it refers to the path to a UNIX domain socket. cute, right? 🧚


✨ COMMAND LINE OPTIONS ✨

  • -f, --fake-mount β€” do everything except the mount system call. all the vibes, zero commitment πŸ™ˆ
  • -n, --no-mtab β€” do not update the system mtab. leave it alone, it's fine.
  • -v, --verbose β€” set verbose mode. she talks more. we love that.
  • -o, --options opt[,opt,...] β€” set mount options (peep the next section, bestie ⬇️)

✨ MOUNT OPTIONS ✨

these are the file system specific mount options that mount.diod handles. 🫢

  • aname=name β€” the aname is the path of the exported file system on the server. you can specify it in the mount spec in host:aname format like NFS, or you can use this option. diod will not allow an attach to an empty aname (periodt). diod has a built-in synthetic control file system that can be mounted with an aname of ctl β€” but note that "ctl" must be explicitly exported. πŸ’…
  • uname=name β€” the user name to authenticate to the diod server. the default is uname=root. πŸ‘‘
  • access=mode β€” select the access mode. access=user (default) causes the mount to support multiple users, and requires root authentication. access=<uid> restricts access at the client to only the specified user. πŸ”’
  • port=n β€” connect to the diod server on the specified port. the default is the IANA-assigned 9pfs port 564. 🌸
  • trans=name β€” select a transport. mount.diod only supports trans=fd because of its strategy for authentication. that's the whole reason, fr fr.
  • rfdno=n,wfdno=n β€” the file descriptor for reading and writing with trans=fd. if set, mount.diod assumes this file descriptor is already connected to a diod server and ignores host in the device specification, and the port=n option. so like, it's already handled, don't worry about it 🫢
  • msize=n β€” the msize is the max 9P packet payload size. the default is 65512 (65536-24). math! ✨
  • version=name β€” select 9P protocol version. diod only supports 9p2000.L. that's the one, that's the only one.
  • cache=mode β€” specify a caching policy. by default, no caches are used. if cache=loose, no attempts are made at consistency β€” this mode is intended for exclusive, read-only mounts. if cache=fscache, use FS-Cache for a persistent, read-only cache backend. 🧊
  • cachetag β€” in the context of cache=fscache, select the cache tag to use for this session. cache tags for existing cache sessions are listed in /sys/fs/9p/caches. go look, it's right there πŸ‘€
  • nodevmap β€” do not map special files. represent them as normal files. this can be used to share devices/named pipes/sockets between hosts. sharing is caring πŸ’–
  • debug=n β€” specifies debug level for the kernel 9p module. the debug level is a bitmask. get ready, it's a whole list:
0x01  = display verbose error messages
0x02  = developer debug (DEBUG_CURRENT)
0x04  = display 9p trace
0x08  = display VFS trace
0x10  = display Marshalling debug
0x20  = display RPC debug
0x40  = display transport debug
0x80  = display allocation debug
0x100 = display protocol message debug
0x200 = display Fid debug
0x400 = display packet debug
0x800 = display fscache tracing debug
the debug level is global, i.e. it applies to all 9P file systems and it remains set after the file system is unmounted. 😭 that's the part to remember. the default is debug=0.

✨ SEE ALSO ✨

diod (8) β€” go read her too, she's the main character πŸ‘‘


and that's the page!! πŸ¦‹ source is diod, version 1.0-pre27-516-g0d87511 β€” no cap, that's the real one, go mount something iconic bestie πŸ’œπŸŽ€βœ¨