2023-08-30 17:31:07 +02:00
|
|
|
=========
|
|
|
|
dm-flakey
|
|
|
|
=========
|
|
|
|
|
|
|
|
This target is the same as the linear target except that it exhibits
|
|
|
|
unreliable behaviour periodically. It's been found useful in simulating
|
|
|
|
failing devices for testing purposes.
|
|
|
|
|
|
|
|
Starting from the time the table is loaded, the device is available for
|
|
|
|
<up interval> seconds, then exhibits unreliable behaviour for <down
|
|
|
|
interval> seconds, and then this cycle repeats.
|
|
|
|
|
|
|
|
Also, consider using this in combination with the dm-delay target too,
|
|
|
|
which can delay reads and writes and/or send them to different
|
|
|
|
underlying devices.
|
|
|
|
|
|
|
|
Table parameters
|
|
|
|
----------------
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
<dev path> <offset> <up interval> <down interval> \
|
|
|
|
[<num_features> [<feature arguments>]]
|
|
|
|
|
|
|
|
Mandatory parameters:
|
|
|
|
|
|
|
|
<dev path>:
|
|
|
|
Full pathname to the underlying block-device, or a
|
|
|
|
"major:minor" device-number.
|
|
|
|
<offset>:
|
|
|
|
Starting sector within the device.
|
|
|
|
<up interval>:
|
|
|
|
Number of seconds device is available.
|
|
|
|
<down interval>:
|
|
|
|
Number of seconds device returns errors.
|
|
|
|
|
|
|
|
Optional feature parameters:
|
|
|
|
|
|
|
|
If no feature parameters are present, during the periods of
|
|
|
|
unreliability, all I/O returns errors.
|
|
|
|
|
2023-10-24 12:59:35 +02:00
|
|
|
error_reads:
|
|
|
|
All read I/O is failed with an error signalled.
|
|
|
|
Write I/O is handled correctly.
|
|
|
|
|
2023-08-30 17:31:07 +02:00
|
|
|
drop_writes:
|
|
|
|
All write I/O is silently ignored.
|
|
|
|
Read I/O is handled correctly.
|
|
|
|
|
|
|
|
error_writes:
|
|
|
|
All write I/O is failed with an error signalled.
|
|
|
|
Read I/O is handled correctly.
|
|
|
|
|
|
|
|
corrupt_bio_byte <Nth_byte> <direction> <value> <flags>:
|
|
|
|
During <down interval>, replace <Nth_byte> of the data of
|
|
|
|
each matching bio with <value>.
|
|
|
|
|
|
|
|
<Nth_byte>:
|
|
|
|
The offset of the byte to replace.
|
|
|
|
Counting starts at 1, to replace the first byte.
|
|
|
|
<direction>:
|
|
|
|
Either 'r' to corrupt reads or 'w' to corrupt writes.
|
|
|
|
'w' is incompatible with drop_writes.
|
|
|
|
<value>:
|
|
|
|
The value (from 0-255) to write.
|
|
|
|
<flags>:
|
|
|
|
Perform the replacement only if bio->bi_opf has all the
|
|
|
|
selected flags set.
|
|
|
|
|
2023-10-24 12:59:35 +02:00
|
|
|
random_read_corrupt <probability>
|
|
|
|
During <down interval>, replace random byte in a read bio
|
|
|
|
with a random value. probability is an integer between
|
|
|
|
0 and 1000000000 meaning 0% to 100% probability of corruption.
|
|
|
|
|
|
|
|
random_write_corrupt <probability>
|
|
|
|
During <down interval>, replace random byte in a write bio
|
|
|
|
with a random value. probability is an integer between
|
|
|
|
0 and 1000000000 meaning 0% to 100% probability of corruption.
|
|
|
|
|
2023-08-30 17:31:07 +02:00
|
|
|
Examples:
|
|
|
|
|
|
|
|
Replaces the 32nd byte of READ bios with the value 1::
|
|
|
|
|
|
|
|
corrupt_bio_byte 32 r 1 0
|
|
|
|
|
|
|
|
Replaces the 224th byte of REQ_META (=32) bios with the value 0::
|
|
|
|
|
|
|
|
corrupt_bio_byte 224 w 0 32
|