]> git.proxmox.com Git - ceph.git/blame - ceph/qa/workunits/rbd/krbd_namespaces.sh
bump version to 18.2.4-pve3
[ceph.git] / ceph / qa / workunits / rbd / krbd_namespaces.sh
CommitLineData
11fdf7f2
TL
1#!/usr/bin/env bash
2
3set -ex
4
5function get_block_name_prefix() {
9f95a23c 6 rbd info --format=json $1 | python3 -c "import sys, json; print(json.load(sys.stdin)['block_name_prefix'])"
11fdf7f2
TL
7}
8
9function do_pwrite() {
10 local spec=$1
11 local old_byte=$2
12 local new_byte=$3
13
14 local dev
15 dev=$(sudo rbd map $spec)
16 cmp <(dd if=/dev/zero bs=1M count=10 | tr \\000 \\$old_byte) $dev
17 xfs_io -c "pwrite -b 1M -S $new_byte 0 10M" $dev
18 sudo rbd unmap $dev
19}
20
21function do_cmp() {
22 local spec=$1
23 local byte=$2
24
25 local dev
26 dev=$(sudo rbd map $spec)
27 cmp <(dd if=/dev/zero bs=1M count=10 | tr \\000 \\$byte) $dev
28 sudo rbd unmap $dev
29}
30
31function gen_child_specs() {
32 local i=$1
33
34 local child_specs="foo/img$i-clone1 foo/img$i-clone2 foo/ns1/img$i-clone1 foo/ns1/img$i-clone2"
35 if [[ $i -ge 3 ]]; then
36 child_specs="$child_specs foo/ns2/img$i-clone1 foo/ns2/img$i-clone2"
37 fi
38 echo $child_specs
39}
40
41ceph osd pool create foo 12
42rbd pool init foo
43ceph osd pool create bar 12
44rbd pool init bar
45
46ceph osd set-require-min-compat-client nautilus
47rbd namespace create foo/ns1
48rbd namespace create foo/ns2
49
50SPECS=(foo/img1 foo/img2 foo/ns1/img3 foo/ns1/img4)
51
52COUNT=1
53for spec in "${SPECS[@]}"; do
54 if [[ $spec =~ img1|img3 ]]; then
55 rbd create --size 10 $spec
56 else
57 rbd create --size 10 --data-pool bar $spec
58 fi
59 do_pwrite $spec 000 $(printf %03d $COUNT)
60 rbd snap create $spec@snap
61 COUNT=$((COUNT + 1))
62done
63for i in {1..4}; do
64 for child_spec in $(gen_child_specs $i); do
65 if [[ $child_spec =~ clone1 ]]; then
66 rbd clone ${SPECS[i - 1]}@snap $child_spec
67 else
68 rbd clone --data-pool bar ${SPECS[i - 1]}@snap $child_spec
69 fi
70 do_pwrite $child_spec $(printf %03d $i) $(printf %03d $COUNT)
71 COUNT=$((COUNT + 1))
72 done
73done
74
75[[ $(rados -p foo ls | grep -c $(get_block_name_prefix foo/img1)) -eq 3 ]]
76[[ $(rados -p bar ls | grep -c $(get_block_name_prefix foo/img2)) -eq 3 ]]
77[[ $(rados -p foo -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img3)) -eq 3 ]]
78[[ $(rados -p bar -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img4)) -eq 3 ]]
79
80[[ $(rados -p foo ls | grep -c $(get_block_name_prefix foo/img1-clone1)) -eq 3 ]]
81[[ $(rados -p bar ls | grep -c $(get_block_name_prefix foo/img1-clone2)) -eq 3 ]]
82[[ $(rados -p foo -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img1-clone1)) -eq 3 ]]
83[[ $(rados -p bar -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img1-clone2)) -eq 3 ]]
84
85[[ $(rados -p foo ls | grep -c $(get_block_name_prefix foo/img2-clone1)) -eq 3 ]]
86[[ $(rados -p bar ls | grep -c $(get_block_name_prefix foo/img2-clone2)) -eq 3 ]]
87[[ $(rados -p foo -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img2-clone1)) -eq 3 ]]
88[[ $(rados -p bar -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img2-clone2)) -eq 3 ]]
89
90[[ $(rados -p foo ls | grep -c $(get_block_name_prefix foo/img3-clone1)) -eq 3 ]]
91[[ $(rados -p bar ls | grep -c $(get_block_name_prefix foo/img3-clone2)) -eq 3 ]]
92[[ $(rados -p foo -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img3-clone1)) -eq 3 ]]
93[[ $(rados -p bar -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img3-clone2)) -eq 3 ]]
94[[ $(rados -p foo -N ns2 ls | grep -c $(get_block_name_prefix foo/ns2/img3-clone1)) -eq 3 ]]
95[[ $(rados -p bar -N ns2 ls | grep -c $(get_block_name_prefix foo/ns2/img3-clone2)) -eq 3 ]]
96
97[[ $(rados -p foo ls | grep -c $(get_block_name_prefix foo/img4-clone1)) -eq 3 ]]
98[[ $(rados -p bar ls | grep -c $(get_block_name_prefix foo/img4-clone2)) -eq 3 ]]
99[[ $(rados -p foo -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img4-clone1)) -eq 3 ]]
100[[ $(rados -p bar -N ns1 ls | grep -c $(get_block_name_prefix foo/ns1/img4-clone2)) -eq 3 ]]
101[[ $(rados -p foo -N ns2 ls | grep -c $(get_block_name_prefix foo/ns2/img4-clone1)) -eq 3 ]]
102[[ $(rados -p bar -N ns2 ls | grep -c $(get_block_name_prefix foo/ns2/img4-clone2)) -eq 3 ]]
103
104COUNT=1
105for spec in "${SPECS[@]}"; do
106 do_cmp $spec $(printf %03d $COUNT)
107 COUNT=$((COUNT + 1))
108done
109for i in {1..4}; do
110 for child_spec in $(gen_child_specs $i); do
111 do_cmp $child_spec $(printf %03d $COUNT)
112 COUNT=$((COUNT + 1))
113 done
114done
115
116echo OK