]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
1 | |
2 | Setup | |
3 | ===== | |
4 | ||
92f5a8d4 | 5 | $ RO_KEY=$(ceph auth get-or-create-key client.ro mon 'profile rbd' mgr 'profile rbd' osd 'profile rbd-read-only') |
11fdf7f2 TL |
6 | $ rbd create --size 10 img |
7 | $ rbd snap create img@snap | |
92f5a8d4 TL |
8 | $ rbd snap protect img@snap |
9 | $ rbd clone img@snap cloneimg | |
11fdf7f2 TL |
10 | $ rbd create --size 1 imgpart |
11 | $ DEV=$(sudo rbd map imgpart) | |
12 | $ cat <<EOF | sudo sfdisk $DEV >/dev/null 2>&1 | |
13 | > unit: sectors | |
14 | > /dev/rbd0p1 : start= 512, size= 512, Id=83 | |
15 | > /dev/rbd0p2 : start= 1024, size= 512, Id=83 | |
16 | > EOF | |
17 | $ sudo rbd unmap $DEV | |
18 | $ rbd snap create imgpart@snap | |
19 | ||
20 | ||
21 | Image HEAD | |
22 | ========== | |
23 | ||
24 | R/W, unpartitioned: | |
25 | ||
26 | $ DEV=$(sudo rbd map img) | |
27 | $ blockdev --getro $DEV | |
28 | 0 | |
29 | $ dd if=/dev/urandom of=$DEV bs=1k seek=1 count=1 status=none | |
30 | $ blkdiscard $DEV | |
31 | $ blockdev --setro $DEV | |
32 | .*BLKROSET: Permission denied (re) | |
33 | [1] | |
34 | $ sudo blockdev --setro $DEV | |
35 | $ blockdev --getro $DEV | |
36 | 1 | |
37 | $ dd if=/dev/urandom of=$DEV bs=1k seek=1 count=1 status=none | |
38 | dd: error writing '/dev/rbd?': Operation not permitted (glob) | |
39 | [1] | |
40 | $ blkdiscard $DEV | |
41 | blkdiscard: /dev/rbd?: BLKDISCARD ioctl failed: Operation not permitted (glob) | |
42 | [1] | |
43 | $ blockdev --setrw $DEV | |
44 | .*BLKROSET: Permission denied (re) | |
45 | [1] | |
46 | $ sudo blockdev --setrw $DEV | |
47 | $ blockdev --getro $DEV | |
48 | 0 | |
49 | $ dd if=/dev/urandom of=$DEV bs=1k seek=1 count=1 status=none | |
50 | $ blkdiscard $DEV | |
51 | $ sudo rbd unmap $DEV | |
52 | ||
53 | R/W, partitioned: | |
54 | ||
55 | $ DEV=$(sudo rbd map imgpart) | |
56 | $ udevadm settle | |
57 | $ blockdev --getro ${DEV}p1 | |
58 | 0 | |
59 | $ blockdev --getro ${DEV}p2 | |
60 | 0 | |
61 | $ dd if=/dev/urandom of=${DEV}p1 bs=1k seek=1 count=1 status=none | |
62 | $ blkdiscard ${DEV}p1 | |
63 | $ dd if=/dev/urandom of=${DEV}p2 bs=1k seek=1 count=1 status=none | |
64 | $ blkdiscard ${DEV}p2 | |
65 | $ blockdev --setro ${DEV}p1 | |
66 | .*BLKROSET: Permission denied (re) | |
67 | [1] | |
68 | $ sudo blockdev --setro ${DEV}p1 | |
69 | $ blockdev --getro ${DEV}p1 | |
70 | 1 | |
71 | $ blockdev --getro ${DEV}p2 | |
72 | 0 | |
73 | $ dd if=/dev/urandom of=${DEV}p1 bs=1k seek=1 count=1 status=none | |
74 | dd: error writing '/dev/rbd?p1': Operation not permitted (glob) | |
75 | [1] | |
76 | $ blkdiscard ${DEV}p1 | |
77 | blkdiscard: /dev/rbd?p1: BLKDISCARD ioctl failed: Operation not permitted (glob) | |
78 | [1] | |
79 | $ dd if=/dev/urandom of=${DEV}p2 bs=1k seek=1 count=1 status=none | |
80 | $ blkdiscard ${DEV}p2 | |
81 | $ blockdev --setrw ${DEV}p1 | |
82 | .*BLKROSET: Permission denied (re) | |
83 | [1] | |
84 | $ sudo blockdev --setrw ${DEV}p1 | |
85 | $ blockdev --getro ${DEV}p1 | |
86 | 0 | |
87 | $ blockdev --getro ${DEV}p2 | |
88 | 0 | |
89 | $ dd if=/dev/urandom of=${DEV}p1 bs=1k seek=1 count=1 status=none | |
90 | $ blkdiscard ${DEV}p1 | |
91 | $ dd if=/dev/urandom of=${DEV}p2 bs=1k seek=1 count=1 status=none | |
92 | $ blkdiscard ${DEV}p2 | |
93 | $ sudo rbd unmap $DEV | |
94 | ||
95 | $ DEV=$(sudo rbd map imgpart) | |
96 | $ udevadm settle | |
97 | $ blockdev --getro ${DEV}p1 | |
98 | 0 | |
99 | $ blockdev --getro ${DEV}p2 | |
100 | 0 | |
101 | $ dd if=/dev/urandom of=${DEV}p1 bs=1k seek=1 count=1 status=none | |
102 | $ blkdiscard ${DEV}p1 | |
103 | $ dd if=/dev/urandom of=${DEV}p2 bs=1k seek=1 count=1 status=none | |
104 | $ blkdiscard ${DEV}p2 | |
105 | $ blockdev --setro ${DEV}p2 | |
106 | .*BLKROSET: Permission denied (re) | |
107 | [1] | |
108 | $ sudo blockdev --setro ${DEV}p2 | |
109 | $ blockdev --getro ${DEV}p1 | |
110 | 0 | |
111 | $ blockdev --getro ${DEV}p2 | |
112 | 1 | |
113 | $ dd if=/dev/urandom of=${DEV}p1 bs=1k seek=1 count=1 status=none | |
114 | $ blkdiscard ${DEV}p1 | |
115 | $ dd if=/dev/urandom of=${DEV}p2 bs=1k seek=1 count=1 status=none | |
116 | dd: error writing '/dev/rbd?p2': Operation not permitted (glob) | |
117 | [1] | |
118 | $ blkdiscard ${DEV}p2 | |
119 | blkdiscard: /dev/rbd?p2: BLKDISCARD ioctl failed: Operation not permitted (glob) | |
120 | [1] | |
121 | $ blockdev --setrw ${DEV}p2 | |
122 | .*BLKROSET: Permission denied (re) | |
123 | [1] | |
124 | $ sudo blockdev --setrw ${DEV}p2 | |
125 | $ blockdev --getro ${DEV}p1 | |
126 | 0 | |
127 | $ blockdev --getro ${DEV}p2 | |
128 | 0 | |
129 | $ dd if=/dev/urandom of=${DEV}p1 bs=1k seek=1 count=1 status=none | |
130 | $ blkdiscard ${DEV}p1 | |
131 | $ dd if=/dev/urandom of=${DEV}p2 bs=1k seek=1 count=1 status=none | |
132 | $ blkdiscard ${DEV}p2 | |
133 | $ sudo rbd unmap $DEV | |
134 | ||
135 | R/O, unpartitioned: | |
136 | ||
137 | $ DEV=$(sudo rbd map --read-only img) | |
138 | $ blockdev --getro $DEV | |
139 | 1 | |
140 | $ dd if=/dev/urandom of=$DEV bs=1k seek=1 count=1 status=none | |
141 | dd: error writing '/dev/rbd?': Operation not permitted (glob) | |
142 | [1] | |
143 | $ blkdiscard $DEV | |
144 | blkdiscard: /dev/rbd?: BLKDISCARD ioctl failed: Operation not permitted (glob) | |
145 | [1] | |
146 | $ blockdev --setrw $DEV | |
147 | .*BLKROSET: Permission denied (re) | |
148 | [1] | |
149 | $ sudo blockdev --setrw $DEV | |
92f5a8d4 TL |
150 | .*BLKROSET: Read-only file system (re) |
151 | [1] | |
11fdf7f2 | 152 | $ blockdev --getro $DEV |
92f5a8d4 | 153 | 1 |
11fdf7f2 | 154 | $ dd if=/dev/urandom of=$DEV bs=1k seek=1 count=1 status=none |
92f5a8d4 TL |
155 | dd: error writing '/dev/rbd?': Operation not permitted (glob) |
156 | [1] | |
11fdf7f2 | 157 | $ blkdiscard $DEV |
92f5a8d4 TL |
158 | blkdiscard: /dev/rbd?: BLKDISCARD ioctl failed: Operation not permitted (glob) |
159 | [1] | |
11fdf7f2 TL |
160 | $ sudo rbd unmap $DEV |
161 | ||
162 | R/O, partitioned: | |
163 | ||
164 | $ DEV=$(sudo rbd map --read-only imgpart) | |
165 | $ udevadm settle | |
166 | $ blockdev --getro ${DEV}p1 | |
167 | 1 | |
168 | $ blockdev --getro ${DEV}p2 | |
169 | 1 | |
170 | $ dd if=/dev/urandom of=${DEV}p1 bs=1k seek=1 count=1 status=none | |
171 | dd: error writing '/dev/rbd?p1': Operation not permitted (glob) | |
172 | [1] | |
173 | $ blkdiscard ${DEV}p1 | |
174 | blkdiscard: /dev/rbd?p1: BLKDISCARD ioctl failed: Operation not permitted (glob) | |
175 | [1] | |
176 | $ dd if=/dev/urandom of=${DEV}p2 bs=1k seek=1 count=1 status=none | |
177 | dd: error writing '/dev/rbd?p2': Operation not permitted (glob) | |
178 | [1] | |
179 | $ blkdiscard ${DEV}p2 | |
180 | blkdiscard: /dev/rbd?p2: BLKDISCARD ioctl failed: Operation not permitted (glob) | |
181 | [1] | |
182 | $ blockdev --setrw ${DEV}p1 | |
183 | .*BLKROSET: Permission denied (re) | |
184 | [1] | |
185 | $ sudo blockdev --setrw ${DEV}p1 | |
92f5a8d4 TL |
186 | .*BLKROSET: Read-only file system (re) |
187 | [1] | |
11fdf7f2 TL |
188 | $ blockdev --setrw ${DEV}p2 |
189 | .*BLKROSET: Permission denied (re) | |
190 | [1] | |
191 | $ sudo blockdev --setrw ${DEV}p2 | |
92f5a8d4 TL |
192 | .*BLKROSET: Read-only file system (re) |
193 | [1] | |
11fdf7f2 | 194 | $ blockdev --getro ${DEV}p1 |
92f5a8d4 | 195 | 1 |
11fdf7f2 | 196 | $ blockdev --getro ${DEV}p2 |
92f5a8d4 | 197 | 1 |
11fdf7f2 | 198 | $ dd if=/dev/urandom of=${DEV}p1 bs=1k seek=1 count=1 status=none |
92f5a8d4 TL |
199 | dd: error writing '/dev/rbd?p1': Operation not permitted (glob) |
200 | [1] | |
11fdf7f2 | 201 | $ blkdiscard ${DEV}p1 |
92f5a8d4 TL |
202 | blkdiscard: /dev/rbd?p1: BLKDISCARD ioctl failed: Operation not permitted (glob) |
203 | [1] | |
11fdf7f2 | 204 | $ dd if=/dev/urandom of=${DEV}p2 bs=1k seek=1 count=1 status=none |
92f5a8d4 TL |
205 | dd: error writing '/dev/rbd?p2': Operation not permitted (glob) |
206 | [1] | |
11fdf7f2 | 207 | $ blkdiscard ${DEV}p2 |
92f5a8d4 TL |
208 | blkdiscard: /dev/rbd?p2: BLKDISCARD ioctl failed: Operation not permitted (glob) |
209 | [1] | |
11fdf7f2 TL |
210 | $ sudo rbd unmap $DEV |
211 | ||
212 | ||
213 | Image snapshot | |
214 | ============== | |
215 | ||
216 | Unpartitioned: | |
217 | ||
218 | $ DEV=$(sudo rbd map img@snap) | |
219 | $ blockdev --getro $DEV | |
220 | 1 | |
221 | $ dd if=/dev/urandom of=$DEV bs=1k seek=1 count=1 status=none | |
222 | dd: error writing '/dev/rbd?': Operation not permitted (glob) | |
223 | [1] | |
224 | $ blkdiscard $DEV | |
225 | blkdiscard: /dev/rbd?: BLKDISCARD ioctl failed: Operation not permitted (glob) | |
226 | [1] | |
227 | $ blockdev --setrw $DEV | |
228 | .*BLKROSET: Permission denied (re) | |
229 | [1] | |
230 | $ sudo blockdev --setrw $DEV | |
231 | .*BLKROSET: Read-only file system (re) | |
232 | [1] | |
233 | $ blockdev --getro $DEV | |
234 | 1 | |
235 | $ dd if=/dev/urandom of=$DEV bs=1k seek=1 count=1 status=none | |
236 | dd: error writing '/dev/rbd?': Operation not permitted (glob) | |
237 | [1] | |
238 | $ blkdiscard $DEV | |
239 | blkdiscard: /dev/rbd?: BLKDISCARD ioctl failed: Operation not permitted (glob) | |
240 | [1] | |
241 | $ sudo rbd unmap $DEV | |
242 | ||
243 | Partitioned: | |
244 | ||
245 | $ DEV=$(sudo rbd map imgpart@snap) | |
246 | $ udevadm settle | |
247 | $ blockdev --getro ${DEV}p1 | |
248 | 1 | |
249 | $ blockdev --getro ${DEV}p2 | |
250 | 1 | |
251 | $ dd if=/dev/urandom of=${DEV}p1 bs=1k seek=1 count=1 status=none | |
252 | dd: error writing '/dev/rbd?p1': Operation not permitted (glob) | |
253 | [1] | |
254 | $ blkdiscard ${DEV}p1 | |
255 | blkdiscard: /dev/rbd?p1: BLKDISCARD ioctl failed: Operation not permitted (glob) | |
256 | [1] | |
257 | $ dd if=/dev/urandom of=${DEV}p2 bs=1k seek=1 count=1 status=none | |
258 | dd: error writing '/dev/rbd?p2': Operation not permitted (glob) | |
259 | [1] | |
260 | $ blkdiscard ${DEV}p2 | |
261 | blkdiscard: /dev/rbd?p2: BLKDISCARD ioctl failed: Operation not permitted (glob) | |
262 | [1] | |
263 | $ blockdev --setrw ${DEV}p1 | |
264 | .*BLKROSET: Permission denied (re) | |
265 | [1] | |
266 | $ sudo blockdev --setrw ${DEV}p1 | |
267 | .*BLKROSET: Read-only file system (re) | |
268 | [1] | |
269 | $ blockdev --setrw ${DEV}p2 | |
270 | .*BLKROSET: Permission denied (re) | |
271 | [1] | |
272 | $ sudo blockdev --setrw ${DEV}p2 | |
273 | .*BLKROSET: Read-only file system (re) | |
274 | [1] | |
275 | $ blockdev --getro ${DEV}p1 | |
276 | 1 | |
277 | $ blockdev --getro ${DEV}p2 | |
278 | 1 | |
279 | $ dd if=/dev/urandom of=${DEV}p1 bs=1k seek=1 count=1 status=none | |
280 | dd: error writing '/dev/rbd?p1': Operation not permitted (glob) | |
281 | [1] | |
282 | $ blkdiscard ${DEV}p1 | |
283 | blkdiscard: /dev/rbd?p1: BLKDISCARD ioctl failed: Operation not permitted (glob) | |
284 | [1] | |
285 | $ dd if=/dev/urandom of=${DEV}p2 bs=1k seek=1 count=1 status=none | |
286 | dd: error writing '/dev/rbd?p2': Operation not permitted (glob) | |
287 | [1] | |
288 | $ blkdiscard ${DEV}p2 | |
289 | blkdiscard: /dev/rbd?p2: BLKDISCARD ioctl failed: Operation not permitted (glob) | |
290 | [1] | |
291 | $ sudo rbd unmap $DEV | |
292 | ||
293 | ||
92f5a8d4 TL |
294 | read-only OSD caps |
295 | ================== | |
296 | ||
297 | R/W: | |
298 | ||
299 | $ DEV=$(sudo rbd map --id ro --key $(echo $RO_KEY) img) | |
300 | rbd: sysfs write failed | |
301 | rbd: map failed: (1) Operation not permitted | |
302 | [1] | |
303 | ||
304 | R/O: | |
305 | ||
306 | $ DEV=$(sudo rbd map --id ro --key $(echo $RO_KEY) --read-only img) | |
307 | $ blockdev --getro $DEV | |
308 | 1 | |
309 | $ sudo rbd unmap $DEV | |
310 | ||
311 | Snapshot: | |
312 | ||
313 | $ DEV=$(sudo rbd map --id ro --key $(echo $RO_KEY) img@snap) | |
314 | $ blockdev --getro $DEV | |
315 | 1 | |
316 | $ sudo rbd unmap $DEV | |
317 | ||
318 | R/W, clone: | |
319 | ||
320 | $ DEV=$(sudo rbd map --id ro --key $(echo $RO_KEY) cloneimg) | |
321 | rbd: sysfs write failed | |
322 | rbd: map failed: (1) Operation not permitted | |
323 | [1] | |
324 | ||
325 | R/O, clone: | |
326 | ||
327 | $ DEV=$(sudo rbd map --id ro --key $(echo $RO_KEY) --read-only cloneimg) | |
328 | $ blockdev --getro $DEV | |
329 | 1 | |
330 | $ sudo rbd unmap $DEV | |
331 | ||
332 | ||
11fdf7f2 TL |
333 | rw -> ro with open_count > 0 |
334 | ============================ | |
335 | ||
336 | $ DEV=$(sudo rbd map img) | |
337 | $ { sleep 10; sudo blockdev --setro $DEV; } & | |
338 | $ dd if=/dev/urandom of=$DEV bs=1k oflag=direct status=noxfer | |
339 | dd: error writing '/dev/rbd?': Operation not permitted (glob) | |
340 | [1-9]\d*\+0 records in (re) | |
341 | [1-9]\d*\+0 records out (re) | |
342 | [1] | |
343 | $ sudo rbd unmap $DEV | |
344 | ||
345 | ||
f91f0fd5 TL |
346 | "-o rw --read-only" should result in read-only mapping |
347 | ====================================================== | |
348 | ||
349 | $ DEV=$(sudo rbd map -o rw --read-only img) | |
350 | $ blockdev --getro $DEV | |
351 | 1 | |
352 | $ sudo rbd unmap $DEV | |
353 | ||
354 | ||
11fdf7f2 TL |
355 | Teardown |
356 | ======== | |
357 | ||
358 | $ rbd snap purge imgpart >/dev/null 2>&1 | |
359 | $ rbd rm imgpart >/dev/null 2>&1 | |
92f5a8d4 TL |
360 | $ rbd rm cloneimg >/dev/null 2>&1 |
361 | $ rbd snap unprotect img@snap | |
11fdf7f2 TL |
362 | $ rbd snap purge img >/dev/null 2>&1 |
363 | $ rbd rm img >/dev/null 2>&1 | |
364 |