1DISORDERFS(1) DISORDERFS(1)
2
3
4
6 disorderfs - FUSE filesystem that introduces non-determinism
7
9 disorderfs [OPTIONS...] ROOTDIR MOUNTPOINT
10
12 disorderfs is an overlay FUSE filesystem that introduces
13 non-determinism into filesystem metadata. For example, it can randomize
14 the order in which directory entries are read. This is useful for
15 detecting non-determinism in the build process.
16
17 ROOTDIR is the path to the underlying directory that is to be mirrored,
18 and MOUNTPOINT is where the overlay should be mounted.
19
21 See fusermount(1), mount.fuse(8), and mount(8) for a full list of
22 options.
23
24 Options specific to disorderfs:
25
26 --multi-user=yes|no
27 Whether or not to allow other users to access the overlay mount
28 (default: no). When enabled, disorderfs accesses the underlying
29 file with the same credentials (user ID, group ID, supplemental
30 group list) as the process accessing the overlaid file. This is
31 different from FUSE’s allow_other option, which allows other users
32 access, but causes disorderfs to access the underlying filesystem
33 with the credentials of the user running disorderfs, which is
34 usually undesirable.
35
36 --multi-user=yes requires disorderfs to run as root.
37
38 --shuffle-dirents=yes|no
39 Whether or not to randomly shuffle directory entries (default: no).
40 The directory entries are shuffled every time the directory is
41 read, so repeated reads of the same directory will probably return
42 different results.
43
44 --reverse-dirents=yes|no
45 Whether or not to return directory entries in reverse order
46 (default: yes).
47
48 --sort-dirents=yes|no
49 Whether or not to return directory entries in sorted order
50 (default: no).
51
52 Note that you need to explicitly override the default
53 --reverse-dirents=no to get results in expected order.
54
55 --pad-blocks=N
56 Add N to the st_blocks field in struct stat(2) (default: 1).
57
58 --share-locks=yes|no
59 Whether or not to share locks between disorderfs and the underlying
60 filesystem (default: no). When this option is enabled, locks
61 created on the underlying filesystem are visible within disorderfs,
62 and vice-versa. When this option is disabled, locks still work
63 within disorderfs, but if one process accesses the underlying
64 filesystem directly, and another process accesses through
65 disorderfs, they won’t see each others' locks.
66
67 Lock sharing is currently buggy, so it is disabled by default.
68
69 --help, -h
70 Display help.
71
72 --version, -V
73 Display the version.
74
76 --share-locks=yes is currently buggy: programs may report that a file
77 is locked when it really isn’t.
78
80 If you are attempting to test a Reproducible Builds issue, it is
81 recommended you use --sort-dirents=yes instead of --shuffle-dirents=yes
82 to ensure that any difference between builds is deterministic in
83 itself. For example:
84
85 $ mkdir rootdir sorted reversed
86 $ touch rootdir/a rootdir/b rootdir/c [1m(1)
87
88 $ disorderfs --sort-dirents=yes --reverse-dirents=no rootdir sorted [1m(2)
89 $ ls -f sorted
90 . .. a b c [1m(3)
91
92 $ disorderfs --sort-dirents=yes --reverse-dirents=yes rootdir reversed [1m(4)
93 $ ls -f reversed
94 c b a .. . [1m(5)
95
96
97 1. First, we create some example files
98 2. Mount rootdir in sorted mode...
99 3. ... and the results are in sorted order.
100 4. We mount rootdir again, sorting the results in reversed
101 order...
102 5. ... and the directory contents are returned in reverse.
103
104 $ fusermount -u sorted $ fusermount -u reversed
105
107 Andrew Ayer <agwa@andrewayer.name> Chris Lamb <lamby@debian.org>
108
109
110
111 2015-08-21 DISORDERFS(1)