Merge tag 'bcachefs-2024-10-05' of git://evilpiepirate.org/bcachefs
[linux-block.git] / Documentation / admin-guide / device-mapper / delay.rst
1 ========
2 dm-delay
3 ========
4
5 Device-Mapper's "delay" target delays reads and/or writes
6 and/or flushs 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 explicitely
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 flushs 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 flushs 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"