From 99ad4bbd91da6a8407c1ac85e0d6fa1e7711f546 Mon Sep 17 00:00:00 2001 From: David Zafman Date: Mon, 31 Jul 2017 16:17:16 -0700 Subject: [PATCH] qa: Add create_pool() which sleeps 1 second like python variant wait_for_clean() can miss the new pool if it races with pool create. Fixes: http://tracker.ceph.com/issues/20465 Signed-off-by: David Zafman --- qa/standalone/ceph-helpers.sh | 7 ++++++- qa/standalone/erasure-code/test-erasure-code.sh | 14 +++++++------- qa/standalone/erasure-code/test-erasure-eio.sh | 2 +- qa/standalone/mon/misc.sh | 4 ++-- qa/standalone/mon/mon-bind.sh | 2 +- qa/standalone/mon/osd-erasure-code-profile.sh | 2 +- qa/standalone/mon/test_pool_quota.sh | 2 +- qa/standalone/osd/osd-dup.sh | 2 +- qa/standalone/scrub/osd-scrub-repair.sh | 10 +++++----- qa/standalone/scrub/osd-scrub-snaps.sh | 3 ++- 10 files changed, 27 insertions(+), 21 deletions(-) diff --git a/qa/standalone/ceph-helpers.sh b/qa/standalone/ceph-helpers.sh index de1d2fc5ae057..a252c76dc563d 100755 --- a/qa/standalone/ceph-helpers.sh +++ b/qa/standalone/ceph-helpers.sh @@ -476,10 +476,15 @@ function test_run_mon() { function create_rbd_pool() { ceph osd pool delete rbd rbd --yes-i-really-really-mean-it || return 1 - ceph osd pool create rbd $PG_NUM || return 1 + create_pool rbd $PG_NUM || return 1 rbd pool init rbd } +function create_pool() { + ceph osd pool create "$@" + sleep 1 +} + ####################################################################### function run_mgr() { diff --git a/qa/standalone/erasure-code/test-erasure-code.sh b/qa/standalone/erasure-code/test-erasure-code.sh index 95126ead05858..6dd5833ad0448 100755 --- a/qa/standalone/erasure-code/test-erasure-code.sh +++ b/qa/standalone/erasure-code/test-erasure-code.sh @@ -57,7 +57,7 @@ function create_erasure_coded_pool() { ceph osd erasure-code-profile set myprofile \ crush-failure-domain=osd || return 1 - ceph osd pool create $poolname 12 12 erasure myprofile \ + create_pool $poolname 12 12 erasure myprofile \ || return 1 wait_for_clean || return 1 } @@ -164,7 +164,7 @@ function TEST_rados_put_get_lrc_advanced() { mapping=DD_ \ crush-steps='[ [ "chooseleaf", "osd", 0 ] ]' \ layers='[ [ "DDc", "" ] ]' || return 1 - ceph osd pool create $poolname 12 12 erasure $profile \ + create_pool $poolname 12 12 erasure $profile \ || return 1 rados_put_get $dir $poolname || return 1 @@ -182,7 +182,7 @@ function TEST_rados_put_get_lrc_kml() { plugin=lrc \ k=4 m=2 l=3 \ crush-failure-domain=osd || return 1 - ceph osd pool create $poolname 12 12 erasure $profile \ + create_pool $poolname 12 12 erasure $profile \ || return 1 rados_put_get $dir $poolname || return 1 @@ -202,7 +202,7 @@ function TEST_rados_put_get_isa() { ceph osd erasure-code-profile set profile-isa \ plugin=isa \ crush-failure-domain=osd || return 1 - ceph osd pool create $poolname 1 1 erasure profile-isa \ + create_pool $poolname 1 1 erasure profile-isa \ || return 1 rados_put_get $dir $poolname || return 1 @@ -222,7 +222,7 @@ function TEST_rados_put_get_jerasure() { plugin=jerasure \ k=4 m=2 \ crush-failure-domain=osd || return 1 - ceph osd pool create $poolname 12 12 erasure $profile \ + create_pool $poolname 12 12 erasure $profile \ || return 1 rados_put_get $dir $poolname || return 1 @@ -242,7 +242,7 @@ function TEST_rados_put_get_shec() { plugin=shec \ k=2 m=1 c=1 \ crush-failure-domain=osd || return 1 - ceph osd pool create $poolname 12 12 erasure $profile \ + create_pool $poolname 12 12 erasure $profile \ || return 1 rados_put_get $dir $poolname || return 1 @@ -318,7 +318,7 @@ function TEST_chunk_mapping() { mapping='_DD' \ crush-steps='[ [ "choose", "osd", 0 ] ]' || return 1 ceph osd erasure-code-profile get remap-profile - ceph osd pool create remap-pool 12 12 erasure remap-profile \ + create_pool remap-pool 12 12 erasure remap-profile \ || return 1 # diff --git a/qa/standalone/erasure-code/test-erasure-eio.sh b/qa/standalone/erasure-code/test-erasure-eio.sh index 678088e941408..b26702d542305 100755 --- a/qa/standalone/erasure-code/test-erasure-eio.sh +++ b/qa/standalone/erasure-code/test-erasure-eio.sh @@ -60,7 +60,7 @@ function create_erasure_coded_pool() { plugin=jerasure \ k=2 m=1 \ crush-failure-domain=osd || return 1 - ceph osd pool create $poolname 1 1 erasure myprofile \ + create_pool $poolname 1 1 erasure myprofile \ || return 1 wait_for_clean || return 1 } diff --git a/qa/standalone/mon/misc.sh b/qa/standalone/mon/misc.sh index 8abf6c5b125c4..e025e0708125a 100755 --- a/qa/standalone/mon/misc.sh +++ b/qa/standalone/mon/misc.sh @@ -40,7 +40,7 @@ function TEST_osd_pool_get_set() { setup $dir || return 1 run_mon $dir a || return 1 create_rbd_pool || return 1 - ceph osd pool create $TEST_POOL 8 + create_pool $TEST_POOL 8 local flag for flag in nodelete nopgchange nosizechange write_fadvise_dontneed noscrub nodeep-scrub; do @@ -82,7 +82,7 @@ function TEST_osd_pool_get_set() { ! ceph osd pool set $TEST_POOL min_size 0 || return 1 local ecpool=erasepool - ceph osd pool create $ecpool 12 12 erasure default || return 1 + create_pool $ecpool 12 12 erasure default || return 1 #erasue pool size=k+m, min_size=k local size=$(ceph osd pool get $ecpool size|awk '{print $2}') local min_size=$(ceph osd pool get $ecpool min_size|awk '{print $2}') diff --git a/qa/standalone/mon/mon-bind.sh b/qa/standalone/mon/mon-bind.sh index f87157c78abb4..a4d774d5566e1 100755 --- a/qa/standalone/mon/mon-bind.sh +++ b/qa/standalone/mon/mon-bind.sh @@ -136,7 +136,7 @@ function TEST_put_get() { run_osd $dir 1 || return 1 run_osd $dir 2 || return 1 - ceph osd pool create hello 8 || return 1 + create_pool hello 8 || return 1 echo "hello world" > $dir/hello rados --pool hello put foo $dir/hello || return 1 diff --git a/qa/standalone/mon/osd-erasure-code-profile.sh b/qa/standalone/mon/osd-erasure-code-profile.sh index 6bfc2587f8b8b..5480612997ce0 100755 --- a/qa/standalone/mon/osd-erasure-code-profile.sh +++ b/qa/standalone/mon/osd-erasure-code-profile.sh @@ -98,7 +98,7 @@ function TEST_rm() { grep "WRONG does not exist" || return 1 ceph osd erasure-code-profile set $profile || return 1 - ceph osd pool create poolname 12 12 erasure $profile || return 1 + create_pool poolname 12 12 erasure $profile || return 1 ! ceph osd erasure-code-profile rm $profile > $dir/out 2>&1 || return 1 grep "poolname.*using.*$profile" $dir/out || return 1 ceph osd pool delete poolname poolname --yes-i-really-really-mean-it || return 1 diff --git a/qa/standalone/mon/test_pool_quota.sh b/qa/standalone/mon/test_pool_quota.sh index dcf89fd26e2d0..85941a895f631 100755 --- a/qa/standalone/mon/test_pool_quota.sh +++ b/qa/standalone/mon/test_pool_quota.sh @@ -34,7 +34,7 @@ function TEST_pool_quota() { run_osd $dir 2 || return 1 local poolname=testquoa - ceph osd pool create $poolname 20 + create_pool $poolname 20 local objects=`ceph df detail | grep -w $poolname|awk '{print $3}'` local bytes=`ceph df detail | grep -w $poolname|awk '{print $4}'` diff --git a/qa/standalone/osd/osd-dup.sh b/qa/standalone/osd/osd-dup.sh index a1bd1af5d621a..759422edd3b43 100755 --- a/qa/standalone/osd/osd-dup.sh +++ b/qa/standalone/osd/osd-dup.sh @@ -38,7 +38,7 @@ function TEST_filestore_to_bluestore() { sleep 5 - ceph osd pool create foo 16 + create_pool foo 16 # write some objects rados bench -p foo 10 write -b 4096 --no-cleanup || return 1 diff --git a/qa/standalone/scrub/osd-scrub-repair.sh b/qa/standalone/scrub/osd-scrub-repair.sh index 28db9476b1b83..6f36149e10dff 100755 --- a/qa/standalone/scrub/osd-scrub-repair.sh +++ b/qa/standalone/scrub/osd-scrub-repair.sh @@ -183,7 +183,7 @@ function create_ec_pool() { ceph osd erasure-code-profile set myprofile crush-failure-domain=osd $3 $4 $5 $6 $7 || return 1 - ceph osd pool create "$poolname" 1 1 erasure myprofile || return 1 + create_pool "$poolname" 1 1 erasure myprofile || return 1 if [ "$allow_overwrites" = "true" ]; then ceph osd pool set "$poolname" allow_ec_overwrites true || return 1 @@ -487,8 +487,8 @@ function TEST_corrupt_scrub_replicated() { create_rbd_pool || return 1 wait_for_clean || return 1 - ceph osd pool create foo 1 || return 1 - ceph osd pool create $poolname 1 1 || return 1 + create_pool foo 1 || return 1 + create_pool $poolname 1 1 || return 1 wait_for_clean || return 1 for i in $(seq 1 $total_objs) ; do @@ -1615,7 +1615,7 @@ function corrupt_scrub_erasure() { fi done create_rbd_pool || return 1 - ceph osd pool create foo 1 + create_pool foo 1 create_ec_pool $poolname $allow_overwrites k=2 m=1 stripe_unit=2K --force || return 1 wait_for_clean || return 1 @@ -2549,7 +2549,7 @@ function TEST_periodic_scrub_replicated() { create_rbd_pool || return 1 wait_for_clean || return 1 - ceph osd pool create $poolname 1 1 || return 1 + create_pool $poolname 1 1 || return 1 wait_for_clean || return 1 local osd=0 diff --git a/qa/standalone/scrub/osd-scrub-snaps.sh b/qa/standalone/scrub/osd-scrub-snaps.sh index 020363683e94a..2c64784570936 100755 --- a/qa/standalone/scrub/osd-scrub-snaps.sh +++ b/qa/standalone/scrub/osd-scrub-snaps.sh @@ -46,7 +46,8 @@ function TEST_scrub_snaps() { wait_for_clean || return 1 # Create a pool with a single pg - ceph osd pool create $poolname 1 1 + create_pool $poolname 1 1 + wait_for_clean || return 1 poolid=$(ceph osd dump | grep "^pool.*[']test[']" | awk '{ print $2 }') dd if=/dev/urandom of=$TESTDATA bs=1032 count=1 -- 2.39.5