dm-delay
dm-delay is a Linux device-mapper target that delays block I/O submission using configurable read, write and flush classes.
Parameters: Each settings group supplies a device, sector offset and delay in milliseconds. Three arguments share one group across classes; six separate reads from writes and flushes; nine give flushes their own group. [1]
Selection: In Linux v6.12, write-direction bios carrying REQ_PREFLUSH select the flush class. A write-direction bio carrying FUA but not REQ_PREFLUSH selects the write class. This concerns flags arriving at the target, not every physical command downstream; the block layer can transform flush and FUA requests. [2] [3]
Timing: The target delays submission, not completion for a fixed application-visible interval. Presuspend disables delaying and releases queued bios without waiting for expiry. Record observed timing separately from configured delay. [2]
Engine: In v6.12, all configured class delays are below 50 ms for the kernel thread path; otherwise the target uses a timer and workqueue. Expiry uses jiffies. This implementation boundary is not an application latency guarantee. [2]
Relations
- related
- dm-flakey, Fault injection, Fail-slow, Force Unit Access
Limitations
- Selective block delays do not establish the cause or field frequency of a hardware slowdown. [1]
Citations
- Linux v6.12: dm-delay parameters
- Linux v6.12: dm-delay mapping, delayed submission and presuspend
- Linux v6.12: explicit volatile write-back cache control
Further reading
Sources & caveats
- Implementation reviewed at Linux v6.12 commit adc218676eef25575469234709c2d87185ca223a.
- Source review only: no device-mapper target was loaded, no I/O was delayed and no hardware failure rate was measured.