'\" t .\" Title: disorderfs .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 2015-08-21 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" .TH "DISORDERFS" "1" "2015\-08\-21" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" disorderfs \- FUSE filesystem that introduces non\-determinism .SH "SYNOPSIS" .sp \fBdisorderfs\fR [\fIOPTIONS\fR\&...] \fIROOTDIR\fR \fIMOUNTPOINT\fR .SH "DESCRIPTION" .sp \fBdisorderfs\fR 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\&. .sp \fIROOTDIR\fR is the path to the underlying directory that is to be mirrored, and \fIMOUNTPOINT\fR is where the overlay should be mounted\&. .SH "OPTIONS" .sp See fusermount(1), mount\&.fuse(8), and mount(8) for a full list of options\&. .sp Options specific to \fBdisorderfs\fR: .PP \fB\-\-multi\-user=yes|no\fR .RS 4 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\(cqs \fBallow_other\fR 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\&. \fB\-\-multi\-user=yes\fR requires disorderfs to run as root\&. .RE .PP \fB\-\-shuffle\-dirents=yes|no\fR .RS 4 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\&. .RE .PP \fB\-\-reverse\-dirents=yes|no\fR .RS 4 Whether or not to return directory entries in reverse order (default: yes)\&. .RE .PP \fB\-\-sort\-dirents=yes|no\fR .RS 4 Whether or not to return directory entries in sorted order (default: no)\&. Note that you need to explicitly override the default \fB\-\-reverse\-dirents=no\fR to get results in expected order\&. .RE .PP \fB\-\-pad\-blocks=\fR\fB\fIN\fR\fR .RS 4 Add \fIN\fR to the st_blocks field in struct stat(2) (default: 1)\&. .RE .PP \fB\-\-share\-locks=yes|no\fR .RS 4 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\(cqt see each others\*(Aq locks\&. Lock sharing is currently buggy, so it is disabled by default\&. .RE .PP \fB\-\-help\fR, \fB\-h\fR .RS 4 Display help\&. .RE .PP \fB\-\-version\fR, \fB\-V\fR .RS 4 Display the version\&. .RE .SH "BUGS" .sp \fB\-\-share\-locks=yes\fR is currently buggy: programs may report that a file is locked when it really isn\(cqt\&. .SH "EXAMPLE" .sp If you are attempting to test a Reproducible Builds issue, it is recommended you use \fB\-\-sort\-dirents=yes\fR instead of \fB\-\-shuffle\-dirents=yes\fR to ensure that any difference between builds is deterministic in itself\&. For example: .sp .if n \{\ .RS 4 .\} .nf $ mkdir rootdir sorted reversed $ touch rootdir/a rootdir/b rootdir/c \fB(1)\fR $ disorderfs \-\-sort\-dirents=yes \-\-reverse\-dirents=no rootdir sorted \fB(2)\fR $ ls \-f sorted \&. \&.\&. a b c \fB(3)\fR $ disorderfs \-\-sort\-dirents=yes \-\-reverse\-dirents=yes rootdir reversed \fB(4)\fR $ ls \-f reversed c b a \&.\&. \&. \fB(5)\fR .fi .if n \{\ .RE .\} .sp .TS tab(:); r lw(\n(.lu*75u/100u). \fB1.\fR\h'-2n':T{ First, we create some example files T} \fB2.\fR\h'-2n':T{ Mount \fBrootdir\fR in sorted mode\&... T} \fB3.\fR\h'-2n':T{ \&... and the results are in sorted order\&. T} \fB4.\fR\h'-2n':T{ We mount \fBrootdir\fR again, sorting the results in reversed order\&... T} \fB5.\fR\h'-2n':T{ \&... and the directory contents are returned in reverse\&. T} .TE .sp $ fusermount \-u sorted $ fusermount \-u reversed .SH "AUTHORS" .sp Andrew Ayer Chris Lamb