]> git.proxmox.com Git - ceph.git/blob - ceph/qa/workunits/rbd/krbd_stable_writes.sh
bump version to 19.2.0-pve1
[ceph.git] / ceph / qa / workunits / rbd / krbd_stable_writes.sh
1 #!/usr/bin/env bash
2
3 set -ex
4
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)
11 grep -q $val /sys/dev/block/$devno/queue/stable_writes
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
25 IMAGE_NAME="stable-writes-test"
26
27 rbd create --size 1 $IMAGE_NAME
28 DEV=$(sudo rbd map $IMAGE_NAME)
29
30 fallocate -l 1M loopfile
31 LOOP_DEV=$(sudo losetup -f --show loopfile)
32
33 [[ $(blockdev --getsize64 $DEV) -eq 1048576 ]]
34 grep -q 1 /sys/block/${DEV#/dev/}/queue/stable_writes
35
36 rbd resize --size 2 $IMAGE_NAME
37 [[ $(blockdev --getsize64 $DEV) -eq 2097152 ]]
38 grep -q 1 /sys/block/${DEV#/dev/}/queue/stable_writes
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
138 sudo rbd unmap $DEV
139 rbd rm $IMAGE_NAME
140
141 echo OK