mount.diod(8)
π mount.diod β bestie edition π
okay so this is mount.diod(8), from the diod manual set, and it's genuinely one of my faves. let's get into it π«Ά
β¨ NAME β¨
mount.diod β mount diod file systems π
πΈ SYNOPSIS πΈ
mount.diod [OPTIONS] host[:aname] dir [-o options]
like, that's the whole vibe. host, dir, and then whatever options you're feeling β¨
π¦ 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 honestly.
mount.diod does two main things:
- connect and authenticate to the diod server
- issue the
mount(2)system call with appropriate mount options
no cap, that's it. two jobs.
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. sneaky but cute.
heads up bestie: this command requires root to execute the mount(2) system call. no root, no mount, periodt.
Also the 9p file system has to support the 9P2000.L protocol variant, e.g. kernel 2.6.38 or above. so check your kernel, fr fr.
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. it's giving "we'll find someone who works". π
β οΈ but listen: post-connect mount errors are immediately fatal. once you're connected, there's no trying the next one. that's the rules.
If the host portion of the mount spec begins with a forward-slash (/), it refers to the path to a UNIX domain socket. yes bestie, sockets count as hosts now π«Ά
π COMMAND LINE OPTIONS π
-f,--fake-mountβ do literally everything except the mount system call. window shopping, basically π-n,--no-mtabβ do not update the system mtab. leave the mtab alone, she's tired.-v,--verboseβ set verbose mode. she's chatty now, and honestly? we love that.-o,--options opt[,opt,...]β set mount options (see below, babes π)
π MOUNT OPTIONS π
these are the file system specific mount options handled by mount.diod. buckle up π
aname=nameβ the aname is the path of the exported file system on the server. you can put it in the mount spec inhost:anameformat like NFS, or you can say it with this option instead. either way works, we're flexible. diod will not allow an attach to an empty aname β so don't leave it blank, bestie. diod has a built-in synthetic control file system that can be mounted with an aname ofctl. π note that"ctl"must be explicitly exported, it's not just vibing there for free.uname=nameβ the user name to authenticate to the diod server. the default isuname=root. yeah, root by default, that's just how she is.access=modeβ select the access mode.access=user(the default) causes the mount to support multiple users, and requires root authentication.access=<uid>restricts access at the client to only the specified user. so: everyone or one person, no in-between πport=nβ connect to the diod server on the specified port. the default is the IANA-assigned 9pfs port564. βtrans=nameβ select a transport.mount.diodonly supportstrans=fdbecause of its strategy for authentication. so like, that's the only one, no menu, no choices, just fd πrfdno=n,wfdno=nβ the file descriptor for reading and writing withtrans=fd. if set,mount.diodassumes this file descriptor is already connected to a diod server and ignoreshostin the device specification, and theport=noption. it's giving "I already know where I'm going, don't worry about it" πmsize=nβ the msize is the max 9P packet payload size. the default is65512(65536-24). yes, exactly that math, we love a subtract β¨version=nameβ select 9P protocol version. diod only supports9p2000.L. periodt, that's the version.cache=modeβ specify a caching policy. by default, no caches are used. ifcache=loose, no attempts are made at consistency β this mode is intended for exclusive, read-only mounts. ifcache=fscache, use FS-Cache for a persistent, read-only cache backend. pick your fighter π¦cachetagβ in the context ofcache=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, they're all 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, so here's the whole menu, no skipping:0x01= display verbose error messages0x02= developer debug (DEBUG_CURRENT)0x04= display 9p trace0x08= display VFS trace0x10= display Marshalling debug0x20= display RPC debug0x40= display transport debug0x80= display allocation debug0x100= display protocol message debug0x200= display Fid debug0x400= display packet debug0x800= 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. she does not forget. the default is debug=0.
π SEE ALSO π
diod (8)
and that's the page, bestie π written up in the diod-1.0.24 release, dated 2015-03-31 β shoutout to the diod crew for keeping the 9p girlies fed. go mount something iconic πβ¨
π¦ where this page comes from
- debian bookworm: diod 1.0.24-5 Β· GPL-2.0-only
- debian trixie: diod 1.0.24-5.1 Β· GPL-2.0-only
- ubuntu jammy: diod 1.0.24-5 Β· GPL-2.0-only
- ubuntu noble: diod 1.0.24-5.1 Β· GPL-2.0-only
- ubuntu questing: diod 1.0.24-5.2
- ubuntu resolute: diod 1.0.24-5.2build1 Β· GPL-2.0-only
- ubuntu stonking: diod 1.0.24-5.2ubuntu1 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms