]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/bash | |
2 | ||
3 | source $CEPH_ROOT/qa/standalone/ceph-helpers.sh | |
4 | ||
5 | [ `uname` = FreeBSD ] && exit 0 | |
6 | ||
7 | function run() { | |
8 | local dir=$1 | |
9 | shift | |
10 | ||
11 | export CEPH_MON="127.0.0.1:7146" # git grep '\<7146\>' : there must be only one | |
12 | export CEPH_ARGS | |
13 | CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none " | |
14 | CEPH_ARGS+="--mon-host=$CEPH_MON " | |
15 | # avoid running out of fds in rados bench | |
16 | CEPH_ARGS+="--filestore_wbthrottle_xfs_ios_hard_limit=900 " | |
17 | CEPH_ARGS+="--filestore_wbthrottle_btrfs_ios_hard_limit=900 " | |
18 | local funcs=${@:-$(set | sed -n -e 's/^\(TEST_[0-9a-z_]*\) .*/\1/p')} | |
19 | for func in $funcs ; do | |
20 | setup $dir || return 1 | |
21 | $func $dir || return 1 | |
22 | teardown $dir || return 1 | |
23 | done | |
24 | } | |
25 | ||
26 | function TEST_filestore_to_bluestore() { | |
27 | local dir=$1 | |
28 | ||
29 | local flimit=$(ulimit -n) | |
30 | if [ $flimit -lt 1536 ]; then | |
31 | echo "Low open file limit ($flimit), test may fail. Increase to 1536 or higher and retry if that happens." | |
32 | fi | |
33 | ||
34 | run_mon $dir a || return 1 | |
35 | run_mgr $dir x || return 1 | |
36 | run_osd $dir 0 || return 1 | |
37 | osd_pid=$(cat $dir/osd.0.pid) | |
38 | run_osd $dir 1 || return 1 | |
39 | run_osd $dir 2 || return 1 | |
40 | ||
41 | sleep 5 | |
42 | ||
43 | create_pool foo 16 | |
44 | ||
45 | # write some objects | |
46 | rados bench -p foo 10 write -b 4096 --no-cleanup || return 1 | |
47 | ||
48 | # kill | |
49 | while kill $osd_pid; do sleep 1 ; done | |
50 | ceph osd down 0 | |
51 | ||
52 | mv $dir/0 $dir/0.old || return 1 | |
53 | mkdir $dir/0 || return 1 | |
54 | ofsid=$(cat $dir/0.old/fsid) | |
55 | echo "osd fsid $ofsid" | |
56 | O=$CEPH_ARGS | |
57 | CEPH_ARGS+="--log-file $dir/cot.log --log-max-recent 0 " | |
58 | ceph-objectstore-tool --type bluestore --data-path $dir/0 --fsid $ofsid \ | |
59 | --op mkfs || return 1 | |
60 | ceph-objectstore-tool --data-path $dir/0.old --target-data-path $dir/0 \ | |
61 | --op dup || return 1 | |
62 | CEPH_ARGS=$O | |
63 | ||
64 | run_osd_bluestore $dir 0 || return 1 | |
65 | ||
66 | while ! ceph osd stat | grep '3 up' ; do sleep 1 ; done | |
67 | ceph osd metadata 0 | grep bluestore || return 1 | |
68 | ||
69 | ceph osd scrub 0 | |
70 | ||
71 | # give it some time | |
72 | sleep 15 | |
73 | # and make sure mon is sync'ed | |
74 | flush_pg_stats | |
75 | ||
76 | wait_for_clean || return 1 | |
77 | } | |
78 | ||
79 | main osd-dup "$@" | |
80 | ||
81 | # Local Variables: | |
82 | # compile-command: "cd ../.. ; make -j4 && test/osd/osd-dup.sh" | |
83 | # End: |