xref: /openbmc/linux/Documentation/admin-guide/device-mapper/dm-flakey.rst (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
16cf2a73cSMauro Carvalho Chehab=========
26cf2a73cSMauro Carvalho Chehabdm-flakey
36cf2a73cSMauro Carvalho Chehab=========
46cf2a73cSMauro Carvalho Chehab
56cf2a73cSMauro Carvalho ChehabThis target is the same as the linear target except that it exhibits
66cf2a73cSMauro Carvalho Chehabunreliable behaviour periodically.  It's been found useful in simulating
76cf2a73cSMauro Carvalho Chehabfailing devices for testing purposes.
86cf2a73cSMauro Carvalho Chehab
96cf2a73cSMauro Carvalho ChehabStarting from the time the table is loaded, the device is available for
106cf2a73cSMauro Carvalho Chehab<up interval> seconds, then exhibits unreliable behaviour for <down
116cf2a73cSMauro Carvalho Chehabinterval> seconds, and then this cycle repeats.
126cf2a73cSMauro Carvalho Chehab
136cf2a73cSMauro Carvalho ChehabAlso, consider using this in combination with the dm-delay target too,
146cf2a73cSMauro Carvalho Chehabwhich can delay reads and writes and/or send them to different
156cf2a73cSMauro Carvalho Chehabunderlying devices.
166cf2a73cSMauro Carvalho Chehab
176cf2a73cSMauro Carvalho ChehabTable parameters
186cf2a73cSMauro Carvalho Chehab----------------
196cf2a73cSMauro Carvalho Chehab
206cf2a73cSMauro Carvalho Chehab::
216cf2a73cSMauro Carvalho Chehab
226cf2a73cSMauro Carvalho Chehab  <dev path> <offset> <up interval> <down interval> \
236cf2a73cSMauro Carvalho Chehab    [<num_features> [<feature arguments>]]
246cf2a73cSMauro Carvalho Chehab
256cf2a73cSMauro Carvalho ChehabMandatory parameters:
266cf2a73cSMauro Carvalho Chehab
276cf2a73cSMauro Carvalho Chehab    <dev path>:
286cf2a73cSMauro Carvalho Chehab        Full pathname to the underlying block-device, or a
296cf2a73cSMauro Carvalho Chehab        "major:minor" device-number.
306cf2a73cSMauro Carvalho Chehab    <offset>:
316cf2a73cSMauro Carvalho Chehab        Starting sector within the device.
326cf2a73cSMauro Carvalho Chehab    <up interval>:
336cf2a73cSMauro Carvalho Chehab        Number of seconds device is available.
346cf2a73cSMauro Carvalho Chehab    <down interval>:
356cf2a73cSMauro Carvalho Chehab        Number of seconds device returns errors.
366cf2a73cSMauro Carvalho Chehab
376cf2a73cSMauro Carvalho ChehabOptional feature parameters:
386cf2a73cSMauro Carvalho Chehab
396cf2a73cSMauro Carvalho Chehab  If no feature parameters are present, during the periods of
406cf2a73cSMauro Carvalho Chehab  unreliability, all I/O returns errors.
416cf2a73cSMauro Carvalho Chehab
42*aa7d7bc9SMikulas Patocka  error_reads:
43*aa7d7bc9SMikulas Patocka	All read I/O is failed with an error signalled.
44*aa7d7bc9SMikulas Patocka	Write I/O is handled correctly.
45*aa7d7bc9SMikulas Patocka
466cf2a73cSMauro Carvalho Chehab  drop_writes:
476cf2a73cSMauro Carvalho Chehab	All write I/O is silently ignored.
486cf2a73cSMauro Carvalho Chehab	Read I/O is handled correctly.
496cf2a73cSMauro Carvalho Chehab
506cf2a73cSMauro Carvalho Chehab  error_writes:
516cf2a73cSMauro Carvalho Chehab	All write I/O is failed with an error signalled.
526cf2a73cSMauro Carvalho Chehab	Read I/O is handled correctly.
536cf2a73cSMauro Carvalho Chehab
546cf2a73cSMauro Carvalho Chehab  corrupt_bio_byte <Nth_byte> <direction> <value> <flags>:
556cf2a73cSMauro Carvalho Chehab	During <down interval>, replace <Nth_byte> of the data of
566cf2a73cSMauro Carvalho Chehab	each matching bio with <value>.
576cf2a73cSMauro Carvalho Chehab
586cf2a73cSMauro Carvalho Chehab    <Nth_byte>:
596cf2a73cSMauro Carvalho Chehab	The offset of the byte to replace.
606cf2a73cSMauro Carvalho Chehab	Counting starts at 1, to replace the first byte.
616cf2a73cSMauro Carvalho Chehab    <direction>:
626cf2a73cSMauro Carvalho Chehab	Either 'r' to corrupt reads or 'w' to corrupt writes.
636cf2a73cSMauro Carvalho Chehab	'w' is incompatible with drop_writes.
646cf2a73cSMauro Carvalho Chehab    <value>:
656cf2a73cSMauro Carvalho Chehab	The value (from 0-255) to write.
666cf2a73cSMauro Carvalho Chehab    <flags>:
676cf2a73cSMauro Carvalho Chehab	Perform the replacement only if bio->bi_opf has all the
686cf2a73cSMauro Carvalho Chehab	selected flags set.
696cf2a73cSMauro Carvalho Chehab
706cf2a73cSMauro Carvalho Chehab  random_read_corrupt <probability>
716cf2a73cSMauro Carvalho Chehab	During <down interval>, replace random byte in a read bio
726cf2a73cSMauro Carvalho Chehab	with a random value. probability is an integer between
736cf2a73cSMauro Carvalho Chehab	0 and 1000000000 meaning 0% to 100% probability of corruption.
746cf2a73cSMauro Carvalho Chehab
756cf2a73cSMauro Carvalho Chehab  random_write_corrupt <probability>
766cf2a73cSMauro Carvalho Chehab	During <down interval>, replace random byte in a write bio
776cf2a73cSMauro Carvalho Chehab	with a random value. probability is an integer between
786cf2a73cSMauro Carvalho Chehab	0 and 1000000000 meaning 0% to 100% probability of corruption.
79
80Examples:
81
82Replaces the 32nd byte of READ bios with the value 1::
83
84  corrupt_bio_byte 32 r 1 0
85
86Replaces the 224th byte of REQ_META (=32) bios with the value 0::
87
88  corrupt_bio_byte 224 w 0 32
89