1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
DISORDERFS(1)
=============
:doctype: manpage
:revdate: 2015-08-21
NAME
----
disorderfs - FUSE filesystem that introduces non-determinism
SYNOPSIS
--------
*disorderfs* ['OPTIONS'...] 'ROOTDIR' 'MOUNTPOINT'
DESCRIPTION
-----------
*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_other* option, 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=yes* requires 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=no*
to get results in expected order.
*--pad-blocks='N'*::
Add 'N' to the st_blocks field in struct stat(2) (default: 1).
*--share-locks=yes|no*::
Whether or not to share locks between disorderfs and the underlying
filesystem (default: no). When this option is enabled, locks created on the
underlying filesystem are visible within disorderfs, and vice-versa.
When this option is disabled, locks still work within disorderfs, but
if one process accesses the underlying filesystem directly, and another
process accesses through disorderfs, they won't see each others' locks.
+
Lock sharing is currently buggy, so it is disabled by default.
*--help*, *-h*::
Display help.
*--version*, *-V*::
Display the version.
BUGS
----
*--share-locks=yes* is currently buggy: programs may report that a
file is locked when it really isn't.
EXAMPLE
-------
If you are attempting to test a https://reproducible-builds.org[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:
[source,sh]
----
$ 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
AUTHORS
-------
Andrew Ayer <agwa@andrewayer.name>
Chris Lamb <lamby@debian.org>
|