Skip to content
  • Bryan Gurney's avatar
    dm: add dust target · e4f3fabd
    Bryan Gurney authored
    
    
    Add the dm-dust target, which simulates the behavior of bad sectors
    at arbitrary locations, and the ability to enable the emulation of
    the read failures at an arbitrary time.
    
    This target behaves similarly to a linear target.  At a given time,
    the user can send a message to the target to start failing read
    requests on specific blocks.  When the failure behavior is enabled,
    reads of blocks configured "bad" will fail with EIO.
    
    Writes of blocks configured "bad" will result in the following:
    
    1. Remove the block from the "bad block list".
    2. Successfully complete the write.
    
    After this point, the block will successfully contain the written
    data, and will service reads and writes normally.  This emulates the
    behavior of a "remapped sector" on a hard disk drive.
    
    dm-dust provides logging of which blocks have been added or removed
    to the "bad block list", as well as logging when a block has been
    removed from the bad block list.  These messages can be used
    alongside the messages from the driver using a dm-dust device to
    analyze the driver's behavior when a read fails at a given time.
    
    (This logging can be reduced via a "quiet" mode, if desired.)
    
    NOTE: If the block size is larger than 512 bytes, only the first sector
    of each "dust block" is detected.  Placing a limiting layer above a dust
    target, to limit the minimum I/O size to the dust block size, will
    ensure proper emulation of the given large block size.
    
    Signed-off-by: default avatarBryan Gurney <bgurney@redhat.com>
    Co-developed-by: default avatarJoe Shimkus <jshimkus@redhat.com>
    Co-developed-by: default avatarJohn Dorminy <jdorminy@redhat.com>
    Co-developed-by: default avatarJohn Pittman <jpittman@redhat.com>
    Co-developed-by: default avatarThomas Jaskiewicz <tjaskiew@redhat.com>
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    e4f3fabd