disorderfs - FUSE filesystem that introduces non-determinism
disorderfs [OPTIONS...] ROOTDIR MOUNTPOINT
disorderfs is an overlay FUSE filesystem that introduces non-determinism into filesystem metadata. For example, it can randomize the order in which directory entries are read. This is useful for detecting non-determinism in the build process.
ROOTDIR is the path to the underlying directory that is to be mirrored, and MOUNTPOINT is where the overlay should be mounted.
Options specific to disorderfs:
--multi-user=yes requires disorderfs to run as root.
Note that you need to explicitly override the default --reverse-dirents=no to get results in expected order.
Lock sharing is currently buggy, so it is disabled by default.
--share-locks=yes is currently buggy: programs may report that a file is locked when it really isn’t.
If you are attempting to test a Reproducible Builds issue, it is recommended you use --sort-dirents=yes instead of --shuffle-dirents=yes to ensure that any difference between builds is deterministic in itself. 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)
|1.||First, we create some example files|
|2.||Mount rootdir in sorted mode...|
|3.||... and the results are in sorted order.|
|4.||We mount rootdir again, sorting the results in reversed order...|
|5.||... and the directory contents are returned in reverse.|
$ fusermount -u sorted $ fusermount -u reversed
Andrew Ayer <firstname.lastname@example.org> Chris Lamb <email@example.com>