Whamcloud - gitweb
LU-2871 lod: stripe data across the OSTs correctly
[fs/lustre-release.git] / lustre / tests / sanity.sh
index af29ca2..fb22df9 100644 (file)
@@ -9,7 +9,7 @@ set -e
 
 ONLY=${ONLY:-"$*"}
 # bug number for skipped test: 13297 2108 9789 3637 9789 3561 12622 5188
-ALWAYS_EXCEPT="                27u   42a  42b  42c  42d  45   51d   68b   $SANITY_EXCEPT"
+ALWAYS_EXCEPT="                42a  42b  42c  42d  45   51d   68b   $SANITY_EXCEPT"
 # UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
 
 # with LOD/OSP landing
@@ -1484,6 +1484,7 @@ test_27u() { # bug 4900
 #define OBD_FAIL_MDS_OSC_PRECREATE      0x139
         do_facet $SINGLEMDS lctl set_param fail_loc=0x139
         test_mkdir -p $DIR/$tdir
+       rm -rf $DIR/$tdir/*
         createmany -o $DIR/$tdir/t- 1000
         do_facet $SINGLEMDS lctl set_param fail_loc=0
 
@@ -1804,6 +1805,32 @@ test_27B() { # LU-2523
 }
 run_test 27B "call setstripe on open unlinked file/rename victim"
 
+test_27C() { #LU-2871
+       [ $OSTCOUNT -lt 2 ] && skip "needs >= 2 OSTs" && return
+
+       declare -a ost_idx
+       local index
+       local i
+       local j
+
+       test_mkdir -p $DIR/$tdir
+       cd $DIR/$tdir
+       for i in $(seq 0 $((OSTCOUNT - 1))); do
+               # set stripe across all OSTs starting from OST$i
+               $SETSTRIPE -i $i -c -1 $tfile$i
+               # get striping information
+               ost_idx=($($GETSTRIPE $tfile$i |
+                        tail -n $((OSTCOUNT + 1)) | awk '{print $1}'))
+               echo ${ost_idx[@]}
+               # check the layout
+               for j in $(seq 0 $((OSTCOUNT - 1))); do
+                       index=$(((i + j) % OSTCOUNT))
+                       [ ${ost_idx[$j]} -eq $index ] || error
+               done
+       done
+}
+run_test 27C "check full striping across all OSTs"
+
 # createtest also checks that device nodes are created and
 # then visible correctly (#2091)
 test_28() { # bug 2091
@@ -8455,15 +8482,29 @@ test_151() {
 
        set_osd_param $list '' writethrough_cache_enable 1
 
-        # pages should be in the case right after write
-        dd if=/dev/urandom of=$DIR/$tfile bs=4k count=$CPAGES || error "dd failed"
-        local BEFORE=`roc_hit`
-        cancel_lru_locks osc
-        cat $DIR/$tfile >/dev/null
-        local AFTER=`roc_hit`
-        if ! let "AFTER - BEFORE == CPAGES"; then
-                error "NOT IN CACHE: before: $BEFORE, after: $AFTER"
-        fi
+       # check write cache is enabled on all obdfilters
+       if get_osd_param $list '' writethrough_cache_enable | grep 0; then
+               echo "oss write cache is NOT enabled"
+               return 0
+       fi
+
+#define OBD_FAIL_OBD_NO_LRU  0x609
+       do_nodes $list $LCTL set_param fail_loc=0x609
+
+       # pages should be in the case right after write
+       dd if=/dev/urandom of=$DIR/$tfile bs=4k count=$CPAGES ||
+               error "dd failed"
+
+       local BEFORE=`roc_hit`
+       cancel_lru_locks osc
+       cat $DIR/$tfile >/dev/null
+       local AFTER=`roc_hit`
+
+       do_nodes $list $LCTL set_param fail_loc=0
+
+       if ! let "AFTER - BEFORE == CPAGES"; then
+               error "NOT IN CACHE: before: $BEFORE, after: $AFTER"
+       fi
 
         # the following read invalidates the cache
         cancel_lru_locks osc