dmflakey: support multiple dm targets for a dm-flakey device
authorHou Tao <houtao1@huawei.com>
Thu, 11 Jan 2018 06:49:30 +0000 (14:49 +0800)
committerEryu Guan <eguan@redhat.com>
Fri, 12 Jan 2018 03:40:39 +0000 (11:40 +0800)
dm-flakey can be used to emulate IO write error, however, when we
also need to prevent the IO error for a specific range of the block
device (eg., the log region of a XFS), we need to specify multiple
dm targets for the dm device.

Option --table can not accommodate the multiple dm targets case, so
let dmsetup get the possible-multiple-targets table from standard
input.

Signed-off-by: Hou Tao <houtao1@huawei.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
common/dmflakey

index 4434307ea713d47d091e27ccf8ce0e2415a78f7d..e34fce85caa80cb6d9620abf4c3832ce419b83da 100644 (file)
@@ -77,11 +77,14 @@ _load_flakey_table()
        $DMSETUP_PROG suspend $suspend_opt flakey-test
        [ $? -ne 0 ] && _fatal "failed to suspend flakey-test"
 
-       $DMSETUP_PROG load flakey-test --table "$table"
+       # There may be multiple dm targets in the table, and these dm targets
+       # will be joined by the newline ("\n"). Option --table can not cope with
+       # the multiple-targets case, so get them by reading from standard input.
+       echo -e "$table" | $DMSETUP_PROG load flakey-test
        [ $? -ne 0 ] && _fatal "failed to load table into flakey-test"
 
        $DMSETUP_PROG resume flakey-test
-       [ $? -ne 0 ] && _fatal  "failed to resumeflakey-test"
+       [ $? -ne 0 ] && _fatal  "failed to resume flakey-test"
 }
 
 # Silently drop all writes and unmount/remount to simulate a crash/power