DISORDERFS(1)
β¨ DISORDERFS(1) β¨
okay bestie, sit down, hydrate, and let me tell you about disorderfs β a FUSE filesystem that is literally chaos incarnate on purpose. π
π NAME π
disorderfs β a FUSE filesystem that introduces non-determinism πβ¨
π¦ SYNOPSIS π¦
disorderfs [OPTIONS...] ROOTDIR MOUNTPOINT
πΈ DESCRIPTION πΈ
So like, disorderfs is an overlay FUSE filesystem that injects non-determinism into filesystem metadata. For example? It can randomize the order in which directory entries are read. And why would you want that, you ask? Because it's iconic for detecting non-determinism in your build process, that's why. π₯
ROOTDIR is the path to the underlying directory that's getting mirrored, and MOUNTPOINT is where the overlay gets mounted. That's it, that's the whole vibe. π«Ά
π OPTIONS π
go check fusermount(1), mount.fuse(8), and mount(8) for the full list of options, bestie β they've got the generic stuff covered. π
But the options that are special to disorderfs:
--multi-user=yes|noβ whether or not to let other users access the overlay mount (default:no). When you turn this on,disorderfsaccesses the underlying file with the same credentials as the process accessing the overlaid file β like, the user ID, group ID, and supplemental group list. πͺͺ This is not the same as FUSE'sallow_otheroption, ok?allow_otherlets other users in, sure, but it makesdisorderfsaccess the underlying filesystem using the credentials of whoever randisorderfs, which is usually not what you want. π
--multi-user=yesrequiresdisorderfsto run as root. no cap.
--shuffle-dirents=yes|noβ whether or not to randomly shuffle directory entries (default:no). The entries get shuffled every single time the directory is read, so repeated reads of the same directory will probably return different results. it's giving unpredictable on purpose. π²--reverse-dirents=yes|noβ whether or not to return directory entries in reverse order (default:yes). yeah, the default is yes, don't @ me. π--sort-dirents=yes|noβ whether or not to return directory entries in sorted order (default:no).
heads up: you need to explicitly override the default with --reverse-dirents=no to actually get results in the expected order. otherwise you're gonna be sitting there like π wondering why everything's backwards.
--pad-blocks=Nβ addsNto thest_blocksfield instruct stat(2)(default:1). just padding, bestie. π§--share-locks=yes|noβ whether or not to share locks betweendisorderfsand the underlying filesystem (default:no). When this is enabled, locks created on the underlying filesystem are visible withindisorderfs, and vice-versa. When it's disabled, locks still work fine withindisorderfsβ but if one process hits the underlying filesystem directly while another goes throughdisorderfs, they won't see each other's locks. π
Lock sharing is currently buggy, so it's disabled by default. π¨
--help,-hβ display help. β¨--version,-Vβ display the version. β
π BUGS π
--share-locks=yes is currently buggy, fr fr: programs may report that a file is locked when it really isn't. π not the false alarm.
π EXAMPLE π
If you're trying to test a Reproducible Builds issue, it is recommended you use --sort-dirents=yes instead of --shuffle-dirents=yes, so you can be sure that any difference between builds is deterministic in itself. like, you want your chaos to be consistent chaos. periodt. π
For example:
$ mkdir rootdir sorted reversed
$ touch rootdir/a rootdir/b rootdir/c (1)
$ disorderfs --sort-dirents=yes --reverse-dirents=no rootdir sorted (2)
$ ls -f sorted
. .. a b c (3)
$ disorderfs --sort-dirents=yes --reverse-dirents=yes rootdir reversed (4)
$ ls -f reversed
c b a .. . (5)
- First, we create some example files π
- Mount
rootdirin sorted mode... - ... and the results are in sorted order. slay.
- We mount
rootdiragain, sorting the results in reversed order... - ... and the directory contents are returned in reverse. π
$ fusermount -u sorted $ fusermount -u reversed
π AUTHORS π
Andrew Ayer <agwa@andrewayer.name> and Chris Lamb <lamby@debian.org> β absolute legends, we stan. π
and that's the whole thing, bestie!! this was disorderfs(1) from the 2018-04-10 era, and yeah the footer says the same thing twice but it's iconic so we're keeping the energy. go break some builds (deterministically). bye!! π¦β¨π
π¦ where this page comes from
- arch rolling: disorderfs 0.6.2-2 Β· GPL-3.0-or-later
- nixos 26.05: disorderfs 0.6.2
- nixpkgs unstable: disorderfs 0.7.0
- ubuntu questing: disorderfs 0.6.0-1
- ubuntu resolute: disorderfs 0.6.2-1 Β· GPL-3.0-or-later
- ubuntu stonking: disorderfs 0.7.0-1 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms