]> git.proxmox.com Git - ceph.git/blame - ceph/qa/workunits/rbd/kernel.sh
update sources to v12.1.3
[ceph.git] / ceph / qa / workunits / rbd / kernel.sh
CommitLineData
7c673cae
FG
1#!/bin/bash -ex
2
3CEPH_SECRET_FILE=${CEPH_SECRET_FILE:-}
4CEPH_ID=${CEPH_ID:-admin}
5SECRET_ARGS=''
6if [ ! -z $CEPH_SECRET_FILE ]; then
7 SECRET_ARGS="--secret $CEPH_SECRET_FILE"
8fi
9
10TMP_FILES="/tmp/img1 /tmp/img1.small /tmp/img1.snap1 /tmp/img1.export /tmp/img1.trunc"
11
12function 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
19function 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
30clean_up
31
32trap clean_up INT TERM EXIT
33
34# create an image
35dd if=/bin/sh of=/tmp/img1 bs=1k count=1 seek=10
36dd if=/bin/dd of=/tmp/img1 bs=1k count=10 seek=100
37dd if=/bin/rm of=/tmp/img1 bs=1k count=100 seek=1000
38dd if=/bin/ls of=/tmp/img1 bs=1k seek=10000
39dd if=/bin/ln of=/tmp/img1 bs=1k seek=100000
40dd if=/dev/zero of=/tmp/img1 count=0 seek=150000
41
42# import
43rbd import /tmp/img1 testimg1
44sudo rbd map testimg1 --user $CEPH_ID $SECRET_ARGS
45
46DEV_ID1=$(get_device_dir rbd testimg1 -)
47echo "dev_id1 = $DEV_ID1"
48cat /sys/bus/rbd/devices/$DEV_ID1/size
49cat /sys/bus/rbd/devices/$DEV_ID1/size | grep 76800000
50
51sudo dd if=/dev/rbd/rbd/testimg1 of=/tmp/img1.export
52cmp /tmp/img1 /tmp/img1.export
53
54# snapshot
55rbd snap create testimg1 --snap=snap1
56sudo rbd map --snap=snap1 testimg1 --user $CEPH_ID $SECRET_ARGS
57
58DEV_ID2=$(get_device_dir rbd testimg1 snap1)
59cat /sys/bus/rbd/devices/$DEV_ID2/size | grep 76800000
60
61sudo dd if=/dev/rbd/rbd/testimg1@snap1 of=/tmp/img1.snap1
62cmp /tmp/img1 /tmp/img1.snap1
63
64# resize
65rbd resize testimg1 --size=40 --allow-shrink
66cat /sys/bus/rbd/devices/$DEV_ID1/size | grep 41943040
67cat /sys/bus/rbd/devices/$DEV_ID2/size | grep 76800000
68
69sudo dd if=/dev/rbd/rbd/testimg1 of=/tmp/img1.small
70cp /tmp/img1 /tmp/img1.trunc
71truncate -s 41943040 /tmp/img1.trunc
72cmp /tmp/img1.trunc /tmp/img1.small
73
74# rollback and check data again
75rbd snap rollback --snap=snap1 testimg1
76cat /sys/bus/rbd/devices/$DEV_ID1/size | grep 76800000
77cat /sys/bus/rbd/devices/$DEV_ID2/size | grep 76800000
78sudo rm -f /tmp/img1.snap1 /tmp/img1.export
79
80sudo dd if=/dev/rbd/rbd/testimg1@snap1 of=/tmp/img1.snap1
81cmp /tmp/img1 /tmp/img1.snap1
82sudo dd if=/dev/rbd/rbd/testimg1 of=/tmp/img1.export
83cmp /tmp/img1 /tmp/img1.export
84
85# remove snapshot and detect error from mapped snapshot
86rbd snap rm --snap=snap1 testimg1
87sudo dd if=/dev/rbd/rbd/testimg1@snap1 of=/tmp/img1.snap1 2>&1 | grep 'Input/output error'
88
89echo OK