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