disorderfs1
Fuse filesystem that introduces non-determinism
Usage
disorderfs [OPTIONS ...]
ROOTDIR
MOUNTPOINT
Overview
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
See fusermount(1), mount.fuse(8), and mount(8) for a full list of options.
Options specific to disorderfs:
-
--multi-user=yes|no -
Whether or not to allow other users to access the overlay mount (default: no). When enabled, disorderfs accesses the underlying file with the same credentials (user ID, group ID, supplemental group list) as the process accessing the overlaid file. This is different from FUSE’s
allow_otheroption, which allows other users access, but causes disorderfs to access the underlying filesystem with the credentials of the user running disorderfs, which is usually undesirable.--multi-user=yesrequires disorderfs to run as root.
-
--shuffle-dirents=yes|no -
Whether or not to randomly shuffle directory entries (default: no). The directory entries are shuffled every time the directory is read, so repeated reads of the same directory will probably return different results.
-
--reverse-dirents=yes|no -
Whether or not to return directory entries in reverse order (default: yes).
-
--sort-dirents=yes|no -
Whether or not to return directory entries in sorted order (default: no).
Note that you need to explicitly override the default
--reverse-dirents=noto get results in expected order.
-
--pad-blocks=N -
Add N to the st_blocks field in struct stat(2) (default: 1).
-
--help, -h -
Display help.
-
--version, -V -
Display the version.
Examples
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
Releases
6 releases since Debian 9 (Stretch); the text changed 3 times.