From: Jianpeng Ma Date: Wed, 22 Apr 2015 01:45:04 +0000 (+0800) Subject: test: add test-case for repair unrecovery-ec pg. X-Git-Tag: v0.94.8~20^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e726f211107cd84cc722744c38213b96dc59cdc7;p=ceph.git test: add test-case for repair unrecovery-ec pg. Signed-off-by: Jianpeng Ma (cherry picked from commit 8f30db85219a6c57cb2fc03f4049a3f57446ca55) --- diff --git a/src/test/osd/osd-scrub-repair.sh b/src/test/osd/osd-scrub-repair.sh index 90c51c047153..783474f93e73 100755 --- a/src/test/osd/osd-scrub-repair.sh +++ b/src/test/osd/osd-scrub-repair.sh @@ -130,6 +130,52 @@ function TEST_corrupt_and_repair_erasure_coded() { teardown $dir || return 1 } +function TEST_unreocvery_erasure_coded() { + local dir=$1 + local poolname=ecpool + local payload=ABCDEF + + setup $dir || return 1 + run_mon $dir a || return 1 + run_osd $dir 0 || return 1 + run_osd $dir 1 || return 1 + run_osd $dir 2 || return 1 + run_osd $dir 3 || return 1 + wait_for_clean || return 1 + + ceph osd erasure-code-profile set myprofile \ + k=2 m=2 ruleset-failure-domain=osd || return 1 + ceph osd pool create $poolname 1 1 erasure myprofile \ + || return 1 + + add_something $dir $poolname + + local primary=$(get_primary $poolname SOMETHING) + local -a osds=($(get_osds $poolname SOMETHING | sed -e "s/$primary//")) + local not_primary_first=${osds[0]} + local not_primary_second=${osds[1]} + local not_primary_third=${osds[2]} + + # + # 1) remove the corresponding file from the OSDs + # + objectstore_tool $dir $not_primary_first SOMETHING remove || return 1 + objectstore_tool $dir $not_primary_second SOMETHING remove || return 1 + objectstore_tool $dir $not_primary_third SOMETHING remove || return 1 + # + # 2) repair the PG + # + local pg=$(get_pg $poolname SOMETHING) + repair $pg + # + # 3) check pg state + # + ceph -s|grep "4 osds: 4 up, 4 in" || return 1 + ceph -s|grep "1/1 unfound" || return 1 + + teardown $dir || return 1 +} + function corrupt_and_repair_two() { local dir=$1 local poolname=$2