| 1 | ========
|
| 2 | dm-delay
|
| 3 | ========
|
| 4 |
|
| 5 | Device-Mapper's "delay" target delays reads and/or writes
|
| 6 | and/or flushes and optionally maps them to different devices.
|
| 7 |
|
| 8 | Arguments::
|
| 9 |
|
| 10 | <device> <offset> <delay> [<write_device> <write_offset> <write_delay>
|
| 11 | [<flush_device> <flush_offset> <flush_delay>]]
|
| 12 |
|
| 13 | Table line has to either have 3, 6 or 9 arguments:
|
| 14 |
|
| 15 | 3: apply offset and delay to read, write and flush operations on device
|
| 16 |
|
| 17 | 6: apply offset and delay to device, also apply write_offset and write_delay
|
| 18 | to write and flush operations on optionally different write_device with
|
| 19 | optionally different sector offset
|
| 20 |
|
| 21 | 9: same as 6 arguments plus define flush_offset and flush_delay explicitly
|
| 22 | on/with optionally different flush_device/flush_offset.
|
| 23 |
|
| 24 | Offsets are specified in sectors.
|
| 25 |
|
| 26 | Delays are specified in milliseconds.
|
| 27 |
|
| 28 |
|
| 29 | Example scripts
|
| 30 | ===============
|
| 31 |
|
| 32 | ::
|
| 33 | #!/bin/sh
|
| 34 | #
|
| 35 | # Create mapped device named "delayed" delaying read, write and flush operations for 500ms.
|
| 36 | #
|
| 37 | dmsetup create delayed --table "0 `blockdev --getsz $1` delay $1 0 500"
|
| 38 |
|
| 39 | ::
|
| 40 | #!/bin/sh
|
| 41 | #
|
| 42 | # Create mapped device delaying write and flush operations for 400ms and
|
| 43 | # splitting reads to device $1 but writes and flushes to different device $2
|
| 44 | # to different offsets of 2048 and 4096 sectors respectively.
|
| 45 | #
|
| 46 | dmsetup create delayed --table "0 `blockdev --getsz $1` delay $1 2048 0 $2 4096 400"
|
| 47 |
|
| 48 | ::
|
| 49 | #!/bin/sh
|
| 50 | #
|
| 51 | # Create mapped device delaying reads for 50ms, writes for 100ms and flushes for 333ms
|
| 52 | # onto the same backing device at offset 0 sectors.
|
| 53 | #
|
| 54 | dmsetup create delayed --table "0 `blockdev --getsz $1` delay $1 0 50 $2 0 100 $1 0 333"
|