From 492902b80a5c98d2e5a437aac81e7d20cd2eb0fb Mon Sep 17 00:00:00 2001 From: wang di Date: Thu, 8 May 2014 14:53:59 -0700 Subject: [PATCH] LU-5035 tests: add striped dir recovery test Add striped dir recovery test to replay-single and recovery-small. Signed-off-by: wang di Change-Id: I0301e0b6f16683f2fe7890e0a02e5128eb0d4a50 Reviewed-on: http://review.whamcloud.com/10277 Tested-by: Jenkins Reviewed-by: Andreas Dilger Tested-by: Maloo Reviewed-by: Jian Yu --- lustre/tests/recovery-small.sh | 14 ++++----- lustre/tests/replay-single.sh | 71 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+), 7 deletions(-) diff --git a/lustre/tests/recovery-small.sh b/lustre/tests/recovery-small.sh index e679906..ed7fae3 100755 --- a/lustre/tests/recovery-small.sh +++ b/lustre/tests/recovery-small.sh @@ -1687,7 +1687,7 @@ test_110a () { local MDTIDX=1 mkdir -p $DIR/$tdir - drop_request "$LFS mkdir -i $MDTIDX $remote_dir" || + drop_request "$LFS mkdir -i $MDTIDX -c2 $remote_dir" || error "lfs mkdir failed" local diridx=$($GETSTRIPE -M $remote_dir) [ $diridx -eq $MDTIDX ] || error "$diridx != $MDTIDX" @@ -1702,7 +1702,7 @@ test_110b () { local MDTIDX=1 mkdir -p $DIR/$tdir - drop_reint_reply "$LFS mkdir -i $MDTIDX $remote_dir" || + drop_reint_reply "$LFS mkdir -i $MDTIDX -c2 $remote_dir" || error "lfs mkdir failed" diridx=$($GETSTRIPE -M $remote_dir) @@ -1718,7 +1718,7 @@ test_110c () { local MDTIDX=1 mkdir -p $DIR/$tdir - drop_update_reply $MDTIDX "$LFS mkdir -i $MDTIDX $remote_dir" || + drop_update_reply $MDTIDX "$LFS mkdir -i $MDTIDX -c2 $remote_dir" || error "lfs mkdir failed" diridx=$($GETSTRIPE -M $remote_dir) @@ -1734,7 +1734,7 @@ test_110d () { local MDTIDX=1 mkdir -p $DIR/$tdir - $LFS mkdir -i $MDTIDX $remote_dir || error "lfs mkdir failed" + $LFS mkdir -i $MDTIDX -c2 $remote_dir || error "lfs mkdir failed" drop_request "rm -rf $remote_dir" || error "rm remote dir failed" @@ -1750,7 +1750,7 @@ test_110e () { local MDTIDX=1 mkdir -p $DIR/$tdir - $LFS mkdir -i $MDTIDX $remote_dir || error "lfs mkdir failed" + $LFS mkdir -i $MDTIDX -c2 $remote_dir || error "lfs mkdir failed" drop_reint_reply "rm -rf $remote_dir" || error "rm remote dir failed" rm -rf $DIR/$tdir || error "rmdir failed" @@ -1765,7 +1765,7 @@ test_110f () { local MDTIDX=1 mkdir -p $DIR/$tdir - $LFS mkdir -i $MDTIDX $remote_dir || error "lfs mkdir failed" + $LFS mkdir -i $MDTIDX -c2 $remote_dir || error "lfs mkdir failed" drop_update_reply $MDTIDX "rm -rf $remote_dir" || error "rm remote dir failed" @@ -1780,7 +1780,7 @@ test_110g () { mkdir -p $remote_dir - createmany -o $remote_dir/f 5000 + createmany -o $remote_dir/f 100 #define OBD_FAIL_MIGRATE_NET_REP 0x1702 do_facet mds$MDTIDX lctl set_param fail_loc=0x1702 diff --git a/lustre/tests/replay-single.sh b/lustre/tests/replay-single.sh index a6ac607..446283c 100755 --- a/lustre/tests/replay-single.sh +++ b/lustre/tests/replay-single.sh @@ -2822,6 +2822,77 @@ test_90() { # bug 19494 } run_test 90 "lfs find identifies the missing striped file segments" +striped_dir_check_100() { + local striped_dir=$DIR/$tdir/striped_dir + local stripe_count=$($LFS getdirstripe -c $striped_dir) + + $LFS getdirstripe $striped_dir + [ $stripe_count -eq 2 ] || error "$stripe_count != 2" + + createmany -o $striped_dir/f-%d 20 || + error "creation failed under striped dir" +} + +test_100a() { + [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return 0 + ([ $FAILURE_MODE == "HARD" ] && + [ "$(facet_host mds1)" == "$(facet_host mds2)" ]) && + skip "MDTs needs to be on diff hosts for HARD fail mode" && + return 0 + + local striped_dir=$DIR/$tdir/striped_dir + local MDTIDX=1 + + mkdir $DIR/$tdir + + #To make sure MDT1 and MDT0 are connected + #otherwise it may create single stripe dir here + $LFS setdirstripe -i1 $DIR/$tdir/remote_dir + + #define OBD_FAIL_UPDATE_OBJ_NET_REP 0x1701 + do_facet mds$((MDTIDX+1)) lctl set_param fail_loc=0x1701 + $LFS setdirstripe -i0 -c2 $striped_dir & + local CLIENT_PID=$! + + fail mds$((MDTIDX + 1)) + + wait $CLIENT_PID || error "striped dir creation failed" + + striped_dir_check_100 || error "striped dir check failed" + rm -rf $DIR/$tdir || error "rmdir failed" +} +run_test 100a "DNE: create striped dir, drop update rep from MDT1, fail MDT1" + +test_100b() { + [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return 0 + ([ $FAILURE_MODE == "HARD" ] && + [ "$(facet_host mds1)" == "$(facet_host mds2)" ]) && + skip "MDTs needs to be on diff hosts for HARD fail mode" && + return 0 + + local striped_dir=$DIR/$tdir/striped_dir + local MDTIDX=1 + + mkdir $DIR/$tdir + + #To make sure MDT1 and MDT0 are connected + #otherwise it may create single stripe dir here + $LFS setdirstripe -i1 $DIR/$tdir/remote_dir + + # OBD_FAIL_MDS_REINT_NET_REP 0x119 + do_facet mds$MDTIDX lctl set_param fail_loc=0x119 + $LFS mkdir -i0 -c2 $striped_dir & + + local CLIENT_PID=$! + fail mds$MDTIDX + + wait $CLIENT_PID || error "striped dir creation failed" + + striped_dir_check_100 || error "striped dir check failed" + rm -rf $DIR/$tdir || error "rmdir failed" +} +run_test 100b "DNE: create striped dir, fail MDT0" + complete $SECONDS check_and_cleanup_lustre exit_status -- 1.8.3.1