]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | #!/bin/bash -ex |
2 | ||
3 | CEPH_SECRET_FILE=${CEPH_SECRET_FILE:-} | |
4 | CEPH_ID=${CEPH_ID:-admin} | |
5 | SECRET_ARGS='' | |
6 | if [ ! -z $CEPH_SECRET_FILE ]; then | |
7 | SECRET_ARGS="--secret $CEPH_SECRET_FILE" | |
8 | fi | |
9 | ||
10 | TMP_FILES="/tmp/img1 /tmp/img1.small /tmp/img1.snap1 /tmp/img1.export /tmp/img1.trunc" | |
11 | ||
12 | function get_device_dir { | |
13 | local POOL=$1 | |
14 | local IMAGE=$2 | |
15 | local SNAP=$3 | |
16 | rbd showmapped | tail -n +2 | egrep "\s+$POOL\s+$IMAGE\s+$SNAP\s+" | awk '{print $1;}' | |
17 | } | |
18 | ||
19 | function clean_up { | |
20 | [ -e /dev/rbd/rbd/testimg1@snap1 ] && | |
21 | sudo rbd unmap /dev/rbd/rbd/testimg1@snap1 | |
22 | if [ -e /dev/rbd/rbd/testimg1 ]; then | |
23 | sudo rbd unmap /dev/rbd/rbd/testimg1 | |
24 | rbd snap purge testimg1 || true | |
25 | fi | |
26 | rbd ls | grep testimg1 > /dev/null && rbd rm testimg1 || true | |
27 | sudo rm -f $TMP_FILES | |
28 | } | |
29 | ||
30 | clean_up | |
31 | ||
32 | trap clean_up INT TERM EXIT | |
33 | ||
34 | # create an image | |
35 | dd if=/bin/sh of=/tmp/img1 bs=1k count=1 seek=10 | |
36 | dd if=/bin/dd of=/tmp/img1 bs=1k count=10 seek=100 | |
37 | dd if=/bin/rm of=/tmp/img1 bs=1k count=100 seek=1000 | |
38 | dd if=/bin/ls of=/tmp/img1 bs=1k seek=10000 | |
39 | dd if=/bin/ln of=/tmp/img1 bs=1k seek=100000 | |
40 | dd if=/dev/zero of=/tmp/img1 count=0 seek=150000 | |
41 | ||
42 | # import | |
43 | rbd import /tmp/img1 testimg1 | |
44 | sudo rbd map testimg1 --user $CEPH_ID $SECRET_ARGS | |
45 | ||
46 | DEV_ID1=$(get_device_dir rbd testimg1 -) | |
47 | echo "dev_id1 = $DEV_ID1" | |
48 | cat /sys/bus/rbd/devices/$DEV_ID1/size | |
49 | cat /sys/bus/rbd/devices/$DEV_ID1/size | grep 76800000 | |
50 | ||
51 | sudo dd if=/dev/rbd/rbd/testimg1 of=/tmp/img1.export | |
52 | cmp /tmp/img1 /tmp/img1.export | |
53 | ||
54 | # snapshot | |
55 | rbd snap create testimg1 --snap=snap1 | |
56 | sudo rbd map --snap=snap1 testimg1 --user $CEPH_ID $SECRET_ARGS | |
57 | ||
58 | DEV_ID2=$(get_device_dir rbd testimg1 snap1) | |
59 | cat /sys/bus/rbd/devices/$DEV_ID2/size | grep 76800000 | |
60 | ||
61 | sudo dd if=/dev/rbd/rbd/testimg1@snap1 of=/tmp/img1.snap1 | |
62 | cmp /tmp/img1 /tmp/img1.snap1 | |
63 | ||
64 | # resize | |
65 | rbd resize testimg1 --size=40 --allow-shrink | |
66 | cat /sys/bus/rbd/devices/$DEV_ID1/size | grep 41943040 | |
67 | cat /sys/bus/rbd/devices/$DEV_ID2/size | grep 76800000 | |
68 | ||
69 | sudo dd if=/dev/rbd/rbd/testimg1 of=/tmp/img1.small | |
70 | cp /tmp/img1 /tmp/img1.trunc | |
71 | truncate -s 41943040 /tmp/img1.trunc | |
72 | cmp /tmp/img1.trunc /tmp/img1.small | |
73 | ||
74 | # rollback and check data again | |
75 | rbd snap rollback --snap=snap1 testimg1 | |
76 | cat /sys/bus/rbd/devices/$DEV_ID1/size | grep 76800000 | |
77 | cat /sys/bus/rbd/devices/$DEV_ID2/size | grep 76800000 | |
78 | sudo rm -f /tmp/img1.snap1 /tmp/img1.export | |
79 | ||
80 | sudo dd if=/dev/rbd/rbd/testimg1@snap1 of=/tmp/img1.snap1 | |
81 | cmp /tmp/img1 /tmp/img1.snap1 | |
82 | sudo dd if=/dev/rbd/rbd/testimg1 of=/tmp/img1.export | |
83 | cmp /tmp/img1 /tmp/img1.export | |
84 | ||
85 | # remove snapshot and detect error from mapped snapshot | |
86 | rbd snap rm --snap=snap1 testimg1 | |
87 | sudo dd if=/dev/rbd/rbd/testimg1@snap1 of=/tmp/img1.snap1 2>&1 | grep 'Input/output error' | |
88 | ||
89 | echo OK |