]>
Commit | Line | Data |
---|---|---|
11fdf7f2 | 1 | #!/usr/bin/env bash |
7c673cae FG |
2 | |
3 | set -ex | |
4 | ||
9f95a23c TL |
5 | function assert_dm() { |
6 | local name=$1 | |
7 | local val=$2 | |
8 | ||
9 | local devno | |
10 | devno=$(sudo dmsetup info -c --noheadings -o Major,Minor $name) | |
adb31ebb | 11 | grep -q $val /sys/dev/block/$devno/queue/stable_writes |
9f95a23c TL |
12 | } |
13 | ||
14 | function dmsetup_reload() { | |
15 | local name=$1 | |
16 | ||
17 | local table | |
18 | table=$(</dev/stdin) | |
19 | ||
20 | sudo dmsetup suspend $name | |
21 | echo "$table" | sudo dmsetup reload $name | |
22 | sudo dmsetup resume $name | |
23 | } | |
24 | ||
adb31ebb | 25 | IMAGE_NAME="stable-writes-test" |
7c673cae FG |
26 | |
27 | rbd create --size 1 $IMAGE_NAME | |
28 | DEV=$(sudo rbd map $IMAGE_NAME) | |
9f95a23c TL |
29 | |
30 | fallocate -l 1M loopfile | |
31 | LOOP_DEV=$(sudo losetup -f --show loopfile) | |
32 | ||
7c673cae | 33 | [[ $(blockdev --getsize64 $DEV) -eq 1048576 ]] |
adb31ebb | 34 | grep -q 1 /sys/block/${DEV#/dev/}/queue/stable_writes |
7c673cae FG |
35 | |
36 | rbd resize --size 2 $IMAGE_NAME | |
37 | [[ $(blockdev --getsize64 $DEV) -eq 2097152 ]] | |
adb31ebb | 38 | grep -q 1 /sys/block/${DEV#/dev/}/queue/stable_writes |
9f95a23c TL |
39 | |
40 | cat <<EOF | sudo dmsetup create tbl | |
41 | 0 1024 linear $LOOP_DEV 0 | |
42 | EOF | |
43 | assert_dm tbl 0 | |
44 | sudo dmsetup remove tbl | |
45 | ||
46 | cat <<EOF | sudo dmsetup create tbl | |
47 | 0 1024 linear $DEV 0 | |
48 | EOF | |
49 | assert_dm tbl 1 | |
50 | sudo dmsetup remove tbl | |
51 | ||
52 | cat <<EOF | sudo dmsetup create tbl | |
53 | 0 1024 linear $LOOP_DEV 0 | |
54 | 1024 2048 error | |
55 | EOF | |
56 | assert_dm tbl 0 | |
57 | sudo dmsetup remove tbl | |
58 | ||
59 | cat <<EOF | sudo dmsetup create tbl | |
60 | 0 1024 linear $DEV 0 | |
61 | 1024 2048 error | |
62 | EOF | |
63 | assert_dm tbl 1 | |
64 | sudo dmsetup remove tbl | |
65 | ||
66 | cat <<EOF | sudo dmsetup create tbl | |
67 | 0 1024 linear $LOOP_DEV 0 | |
68 | 1024 2048 linear $DEV 0 | |
69 | EOF | |
70 | assert_dm tbl 1 | |
71 | sudo dmsetup remove tbl | |
72 | ||
73 | cat <<EOF | sudo dmsetup create tbl | |
74 | 0 1024 linear $DEV 0 | |
75 | 1024 2048 linear $LOOP_DEV 0 | |
76 | EOF | |
77 | assert_dm tbl 1 | |
78 | sudo dmsetup remove tbl | |
79 | ||
80 | cat <<EOF | sudo dmsetup create tbl | |
81 | 0 1024 linear $LOOP_DEV 0 | |
82 | EOF | |
83 | assert_dm tbl 0 | |
84 | cat <<EOF | dmsetup_reload tbl | |
85 | 0 1024 linear $LOOP_DEV 0 | |
86 | 1024 2048 linear $DEV 0 | |
87 | EOF | |
88 | assert_dm tbl 1 | |
89 | cat <<EOF | dmsetup_reload tbl | |
90 | 0 1024 linear $LOOP_DEV 0 | |
91 | EOF | |
92 | assert_dm tbl 0 | |
93 | sudo dmsetup remove tbl | |
94 | ||
95 | cat <<EOF | sudo dmsetup create tbl | |
96 | 0 1024 linear $DEV 0 | |
97 | EOF | |
98 | assert_dm tbl 1 | |
99 | cat <<EOF | dmsetup_reload tbl | |
100 | 0 1024 linear $DEV 0 | |
101 | 1024 2048 linear $LOOP_DEV 0 | |
102 | EOF | |
103 | assert_dm tbl 1 | |
104 | cat <<EOF | dmsetup_reload tbl | |
105 | 0 1024 linear $DEV 0 | |
106 | EOF | |
107 | assert_dm tbl 1 | |
108 | sudo dmsetup remove tbl | |
109 | ||
110 | cat <<EOF | sudo dmsetup create tbl | |
111 | 0 1024 linear $DEV 0 | |
112 | EOF | |
113 | assert_dm tbl 1 | |
114 | cat <<EOF | dmsetup_reload tbl | |
115 | 0 1024 linear $DEV 0 | |
116 | 1024 2048 linear $LOOP_DEV 0 | |
117 | EOF | |
118 | assert_dm tbl 1 | |
119 | cat <<EOF | dmsetup_reload tbl | |
120 | 0 1024 error | |
121 | 1024 2048 linear $LOOP_DEV 0 | |
122 | EOF | |
123 | assert_dm tbl 0 | |
124 | cat <<EOF | dmsetup_reload tbl | |
125 | 0 1024 linear $DEV 0 | |
126 | 1024 2048 linear $LOOP_DEV 0 | |
127 | EOF | |
128 | assert_dm tbl 1 | |
129 | cat <<EOF | dmsetup_reload tbl | |
130 | 0 1024 linear $DEV 0 | |
131 | EOF | |
132 | assert_dm tbl 1 | |
133 | sudo dmsetup remove tbl | |
134 | ||
135 | sudo losetup -d $LOOP_DEV | |
136 | rm loopfile | |
137 | ||
7c673cae | 138 | sudo rbd unmap $DEV |
9f95a23c | 139 | rbd rm $IMAGE_NAME |
7c673cae FG |
140 | |
141 | echo OK |