]>
Commit | Line | Data |
---|---|---|
11fdf7f2 | 1 | #!/usr/bin/env bash |
7c673cae | 2 | # can't use -e because of background process |
11fdf7f2 | 3 | set -x |
7c673cae FG |
4 | |
5 | IMAGE=rbdrw-image | |
6 | LOCKID=rbdrw | |
7 | RELPATH=$(dirname $0)/../../../src/test/librbd | |
8 | RBDRW=$RELPATH/rbdrw.py | |
9 | ||
10 | rbd create $IMAGE --size 10 --image-format 2 --image-shared || exit 1 | |
11 | ||
12 | # rbdrw loops doing I/O to $IMAGE after locking with lockid $LOCKID | |
9f95a23c | 13 | python3 $RBDRW $IMAGE $LOCKID & |
7c673cae FG |
14 | iochild=$! |
15 | ||
16 | # give client time to lock and start reading/writing | |
11fdf7f2 TL |
17 | LOCKS='[]' |
18 | while [ "$LOCKS" == '[]' ] | |
7c673cae FG |
19 | do |
20 | LOCKS=$(rbd lock list $IMAGE --format json) | |
21 | sleep 1 | |
22 | done | |
23 | ||
24 | clientaddr=$(rbd lock list $IMAGE | tail -1 | awk '{print $NF;}') | |
25 | clientid=$(rbd lock list $IMAGE | tail -1 | awk '{print $1;}') | |
26 | echo "clientaddr: $clientaddr" | |
27 | echo "clientid: $clientid" | |
28 | ||
29 | ceph osd blacklist add $clientaddr || exit 1 | |
30 | ||
31 | wait $iochild | |
32 | rbdrw_exitcode=$? | |
33 | if [ $rbdrw_exitcode != 108 ] | |
34 | then | |
35 | echo "wrong exitcode from rbdrw: $rbdrw_exitcode" | |
36 | exit 1 | |
37 | else | |
38 | echo "rbdrw stopped with ESHUTDOWN" | |
39 | fi | |
40 | ||
41 | set -e | |
42 | ceph osd blacklist rm $clientaddr | |
43 | rbd lock remove $IMAGE $LOCKID "$clientid" | |
44 | # rbdrw will have exited with an existing watch, so, until #3527 is fixed, | |
45 | # hang out until the watch expires | |
46 | sleep 30 | |
47 | rbd rm $IMAGE | |
48 | echo OK |