3 CEPH_SECRET_FILE
=${CEPH_SECRET_FILE:-}
4 CEPH_ID
=${CEPH_ID:-admin}
6 if [ ! -z $CEPH_SECRET_FILE ]; then
7 SECRET_ARGS
="--secret $CEPH_SECRET_FILE"
10 TMP_FILES
="/tmp/img1 /tmp/img1.small /tmp/img1.snap1 /tmp/img1.export /tmp/img1.trunc"
12 function get_device_dir
{
16 rbd showmapped |
tail -n +2 |
egrep "\s+$POOL\s+$IMAGE\s+$SNAP\s+" |
awk '{print $1;}'
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
26 rbd
ls |
grep testimg1
> /dev
/null
&& rbd
rm testimg1 || true
32 trap clean_up INT TERM EXIT
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
43 rbd import
/tmp
/img1 testimg1
44 sudo rbd map testimg1
--user $CEPH_ID $SECRET_ARGS
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
51 sudo
dd if=/dev
/rbd
/rbd
/testimg1 of
=/tmp
/img1.
export
52 cmp /tmp
/img1
/tmp
/img1.
export
55 rbd snap create testimg1
--snap=snap1
56 sudo rbd map
--snap=snap1 testimg1
--user $CEPH_ID $SECRET_ARGS
58 DEV_ID2
=$
(get_device_dir rbd testimg1 snap1
)
59 cat /sys
/bus
/rbd
/devices
/$DEV_ID2/size |
grep 76800000
61 sudo
dd if=/dev
/rbd
/rbd
/testimg1@snap1 of
=/tmp
/img1.snap1
62 cmp /tmp
/img1
/tmp
/img1.snap1
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
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
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
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
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'