Whamcloud - gitweb
LU-5035 tests: add striped dir recovery test 77/10277/2
authorwang di <di.wang@intel.com>
Thu, 8 May 2014 21:53:59 +0000 (14:53 -0700)
committerOleg Drokin <oleg.drokin@intel.com>
Tue, 13 May 2014 01:41:08 +0000 (01:41 +0000)
Add striped dir recovery test to replay-single and
recovery-small.

Signed-off-by: wang di <di.wang@intel.com>
Change-Id: I0301e0b6f16683f2fe7890e0a02e5128eb0d4a50
Reviewed-on: http://review.whamcloud.com/10277
Tested-by: Jenkins
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Jian Yu <jian.yu@intel.com>
lustre/tests/recovery-small.sh
lustre/tests/replay-single.sh

index e679906..ed7fae3 100755 (executable)
@@ -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
index a6ac607..446283c 100755 (executable)
@@ -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