Provided by: nbdkit_1.36.3-1ubuntu10_amd64 bug

NAME

       nbdkit-evil-filter - add random data corruption to reads

SYNOPSIS

        nbdkit --filter=evil PLUGIN [PLUGIN-ARGS...]
               evil=[cosmic-rays|stuck-bits|stuck-wires]
               [evil-probability=PROB] [evil-stuck-probability=PROB]
               [evil-seed=SEED]

DESCRIPTION

       nbdkit-evil-filter is a Byzantine filter for nbdkit(1) that randomly corrupts data when reading from the
       underlying plugin.  This can be used for testing filesystem checksums.  Note that it does not change
       write operations, so the underlying plugin contains the correct data.

       nbdkit-error-filter(1) is a related filter that injects hard errors into the NBD protocol.

       This filter has several modes, controlled using the "evil=..."  parameter.  These are:

       "evil=cosmic-rays"
           Bits  are  flipped  at random when reading data.  The probability that a bit is flipped is controlled
           using the "evil-probability" parameter, defaulting to 1e-8 (on average 1 in every  100  million  bits
           read is flipped).

       "evil=stuck-bits"
           This is the default mode.

           Fixed  bits  in  the  backing  file are stuck randomly high or low.  The "evil-probability" parameter
           controls the expected probability that a particular bit is stuck, defaulting in this mode to 1e-8  (1
           in  100  million).  "evil-stuck-probability" controls the probability that a stuck bit is read as its
           stuck value or its correct value, defaulting to 100% (always read as a stuck bit).

       "evil=stuck-wires"
           This is similar to "stuck-bits" but instead of simulating bad backing data, it simulates stuck  wires
           along  the  data path (eg. in a register).  The difference is that when reading, the stuck bit always
           happens at the same position in the packet of data being read, regardless of where on the  underlying
           disk  it is being read from.  "evil-probability" controls the probability of a stuck wire, defaulting
           in this mode to 1e-6 (1 in 1 million).  "evil-stuck-probability"  controls  the  probability  that  a
           stuck bit is read as its stuck value or its correct value, defaulting to 100% (always read as a stuck
           bit).

EXAMPLES

       Add some stuck bits to the backing file at random:

        nbdkit --filter=evil file disk.img

       Cosmic rays will flip (on average) one in every 100 million bits copied from the backing file over NBD:

        nbdkit --filter=evil file disk.img evil=cosmic-rays \
               --run 'nbdcopy $uri output.img'

NOTES

   Extents
       Plugins  can  be  sparse.   This filter only corrupts bits in non-sparse parts of the backing disk and it
       leaves sparse regions unchanged (which is realistic behaviour).  If  you  wish  to  use  this  filter  to
       corrupt sparse regions, then combine this filter with nbdkit-noextents-filter(1).  For example:

        nbdkit --filter=evil --filter=noextents memory 1G

   Probability limited to [ 1e-12 .. 1/8 ]
       The  current  implementation limits probabilities to the range [ 1e-12 .. 1/8 ].  Values below this range
       are treated the same as 0%.  Values above this range are treated the same as 100%.

PARAMETERS

       evil=cosmic-rays
       evil=stuck-bits
       evil=stuck-wires
           Select the mode of evil.  See the "DESCRIPTION" above.  The default is "stuck-bits".

       evil-probability=N
       evil-probability=N:M
       evil-probability=N%
           Set the probability for the mode.  You can either use a floating point number between 0  and  1,  eg.
           "evil-probability=0.001"   or  "evil-probability=1e-6".   Or  you  can  write  it  as  N  in  M,  eg.
           "evil-probability=1:1000000"  or  "evil-probability=3.33:100000".   Or  you  can  write  this  as   a
           percentage, eg. "evil-probability=1%".

           The default probability depends on the mode.

       evil-seed=SEED
           To  make runs repeatable, use this to set a seed for the random number generator.  Note that runs are
           repeatable only if you use the same version of nbdkit, since in future we may change the algorithm.

           The default is to choose a seed at random.

       evil-stuck-probability=N
       evil-stuck-probability=N:M
       evil-stuck-probability=N%
           For the "stuck-*" modes, the probability that when reading a stuck bit you will read the stuck bit or
           the correct value.  This defaults to 1 (ie. 100%) which means the bit is always stuck.  Setting it to
           0.5 for example will mean that half the time the bit appears stuck and half  the  time  you  see  the
           correct value.

FILES

       $filterdir/nbdkit-evil-filter.so
           The filter.

           Use "nbdkit --dump-config" to find the location of $filterdir.

VERSION

       "nbdkit-evil-filter" first appeared in nbdkit 1.36.

SEE ALSO

       nbdkit(1), nbdkit-filter(3), nbdkit-delay-filter(1), nbdkit-noextents-filter(1), nbdkit-error-filter(1).

AUTHORS

       Richard W.M. Jones

COPYRIGHT

       Copyright Red Hat

LICENSE

       Redistribution  and  use in source and binary forms, with or without modification, are permitted provided
       that the following conditions are met:

       •   Redistributions of source code must retain the above copyright notice, this list  of  conditions  and
           the following disclaimer.

       •   Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
           the following disclaimer in the documentation and/or other materials provided with the distribution.

       •   Neither  the  name  of  Red  Hat  nor the names of its contributors may be used to endorse or promote
           products derived from this software without specific prior written permission.

       THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND ANY EXPRESS  OR  IMPLIED  WARRANTIES,
       INCLUDING,  BUT  NOT  LIMITED  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
       PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR CONTRIBUTORS BE LIABLE  FOR  ANY  DIRECT,  INDIRECT,
       INCIDENTAL,  SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
       SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
       ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT  LIABILITY,  OR  TORT  (INCLUDING  NEGLIGENCE  OR
       OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
       DAMAGE.

nbdkit-1.36.3                                      2024-03-31                              nbdkit-evil-filter(1)