1*4882a593Smuzhiyun======== 2*4882a593Smuzhiyundm-delay 3*4882a593Smuzhiyun======== 4*4882a593Smuzhiyun 5*4882a593SmuzhiyunDevice-Mapper's "delay" target delays reads and/or writes 6*4882a593Smuzhiyunand maps them to different devices. 7*4882a593Smuzhiyun 8*4882a593SmuzhiyunParameters:: 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun <device> <offset> <delay> [<write_device> <write_offset> <write_delay> 11*4882a593Smuzhiyun [<flush_device> <flush_offset> <flush_delay>]] 12*4882a593Smuzhiyun 13*4882a593SmuzhiyunWith separate write parameters, the first set is only used for reads. 14*4882a593SmuzhiyunOffsets are specified in sectors. 15*4882a593SmuzhiyunDelays are specified in milliseconds. 16*4882a593Smuzhiyun 17*4882a593SmuzhiyunExample scripts 18*4882a593Smuzhiyun=============== 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun:: 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun #!/bin/sh 23*4882a593Smuzhiyun # Create device delaying rw operation for 500ms 24*4882a593Smuzhiyun echo "0 `blockdev --getsz $1` delay $1 0 500" | dmsetup create delayed 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun:: 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #!/bin/sh 29*4882a593Smuzhiyun # Create device delaying only write operation for 500ms and 30*4882a593Smuzhiyun # splitting reads and writes to different devices $1 $2 31*4882a593Smuzhiyun echo "0 `blockdev --getsz $1` delay $1 0 0 $2 0 500" | dmsetup create delayed 32