Whamcloud - gitweb
LU-3196 tests: a few fixes for > 10 OSTs.
[fs/lustre-release.git] / lustre / tests / sanity.sh
index 4728c75..c70826e 100644 (file)
@@ -677,6 +677,30 @@ test_17n() {
 }
 run_test 17n "run e2fsck against master/slave MDT which contains remote dir"
 
+test_17o() {
+       local WDIR=$DIR/${tdir}o
+       local mdt_index
+       local mdtdevname
+       local rc=0
+
+       mkdir -p $WDIR
+       mdt_index=$($LFS getstripe -M $WDIR)
+       mdt_index=$((mdt_index+1))
+       mdtdevname=$(mdsdevname $mdt_index)
+
+       touch $WDIR/$tfile
+       stop mds${mdt_index}
+       start mds${mdt_index} $mdtdevname $MDS_MOUNT_OPTS
+
+       #define OBD_FAIL_OSD_LMA_INCOMPAT 0x194
+       do_facet mds${mdt_index} lctl set_param fail_loc=0x194
+       ls -l $WDIR/$tfile && rc=1
+       do_facet mds${mdt_index} lctl set_param fail_loc=0
+       [[ $rc -ne 0 ]] && error "stat file should fail"
+       true
+}
+run_test 17o "stat file with incompat LMA feature"
+
 test_18() {
        touch $DIR/f || error "Failed to touch $DIR/f: $?"
        ls $DIR || error "Failed to ls $DIR: $?"
@@ -1843,6 +1867,7 @@ test_27C() { #LU-2871
 
        declare -a ost_idx
        local index
+       local found
        local i
        local j
 
@@ -1855,11 +1880,21 @@ test_27C() { #LU-2871
                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 "$j:${ost_idx[$j]} != $index"
+               [ ${#ost_idx[@]} -eq $OSTCOUNT ] ||
+                       error "${#ost_idx[@]} != $OSTCOUNT"
+
+               for index in $(seq 0 $((OSTCOUNT - 1))); do
+                       found=0
+                       for j in $(echo ${ost_idx[@]}); do
+                               if [ $index -eq $j ]; then
+                                       found=1
+                                       break
+                               fi
+                       done
+                       [ $found = 1 ] ||
+                               error "Can not find $index in ${ost_idx[@]}"
                done
        done
 }
@@ -2397,7 +2432,7 @@ test_33c() {
         for ostnum in $(seq $OSTCOUNT); do
                 # test-framework's OST numbering is one-based, while Lustre's
                 # is zero-based
-                ostname=$(printf "$FSNAME-OST%.4d" $((ostnum - 1)))
+                ostname=$(printf "$FSNAME-OST%.4x" $((ostnum - 1)))
                 # Parsing llobdstat's output sucks; we could grep the /proc
                 # path, but that's likely to not be as portable as using the
                 # llobdstat utility.  So we parse lctl output instead.
@@ -2421,7 +2456,7 @@ test_33c() {
 
         # Total up write_bytes after writing.  We'd better find non-zeros.
         for ostnum in $(seq $OSTCOUNT); do
-                ostname=$(printf "$FSNAME-OST%.4d" $((ostnum - 1)))
+                ostname=$(printf "$FSNAME-OST%.4x" $((ostnum - 1)))
                 write_bytes=$(do_facet ost$ostnum lctl get_param -n \
                         obdfilter/$ostname/stats |
                         awk '/^write_bytes/ {print $7}' )
@@ -2436,7 +2471,7 @@ test_33c() {
         if $all_zeros
         then
                 for ostnum in $(seq $OSTCOUNT); do
-                        ostname=$(printf "$FSNAME-OST%.4d" $((ostnum - 1)))
+                        ostname=$(printf "$FSNAME-OST%.4x" $((ostnum - 1)))
                         echo "Check that write_bytes is present in obdfilter/*/stats:"
                         do_facet ost$ostnum lctl get_param -n \
                                 obdfilter/$ostname/stats