Whamcloud - gitweb
LU-2724 ptlrpc: skip NULL obd_svc_stats in lprocfs_rd_import()
[fs/lustre-release.git] / lustre / tests / sanity.sh
index fe49708..940e64c 100644 (file)
@@ -17,11 +17,6 @@ ALWAYS_EXCEPT="                27u   42a  42b  42c  42d  45   51d   68b   $SANIT
 ALWAYS_EXCEPT="                 76     $ALWAYS_EXCEPT"
 
 
-# Tests that fail on uml
-CPU=`awk '/model/ {print $4}' /proc/cpuinfo`
-#                                    buffer i/o errs             sock spc runas
-[ "$CPU" = "UML" ] && EXCEPT="$EXCEPT 27m 27n 27o 27p 27q 27r 31d 54a  64b 99a 99b 99c 99d 99e 99f 101a"
-
 SRCDIR=$(cd $(dirname $0); echo $PWD)
 export PATH=$PATH:/sbin
 
@@ -65,6 +60,10 @@ init_logging
 
 [ "$SLOW" = "no" ] && EXCEPT_SLOW="24o 24v 27m 36f 36g 36h 51b 60c 63 64b 68 71 73 77f 78 101a 103 115 120g 124b"
 
+[ $(facet_fstype $SINGLEMDS) = "zfs" ] &&
+# bug number for skipped test:        LU-2834 LU-1593 LU-2610 LU-2833 LU-1957 LU-2805
+       ALWAYS_EXCEPT="$ALWAYS_EXCEPT 18      34h     40      48a     180     184c"
+
 FAIL_ON_ERROR=false
 
 cleanup() {
@@ -2002,6 +2001,22 @@ test_31m() {
 }
 run_test 31m "link to file: the same, non-existing, dir==============="
 
+test_31n() {
+       [ -e /proc/self/fd/173 ] && echo "skipping, fd 173 is in use" && return
+       touch $DIR/$tfile || error "cannot create '$DIR/$tfile'"
+       nlink=$(stat --format=%h $DIR/$tfile)
+       [ ${nlink:--1} -eq 1 ] || error "nlink is $nlink, expected 1"
+       exec 173<$DIR/$tfile
+       trap "exec 173<&-" EXIT
+       nlink=$(stat --dereference --format=%h /proc/self/fd/173)
+       [ ${nlink:--1} -eq 1 ] || error "nlink is $nlink, expected 1"
+       rm $DIR/$tfile || error "cannot remove '$DIR/$tfile'"
+       nlink=$(stat --dereference --format=%h /proc/self/fd/173)
+       [ ${nlink:--1} -eq 0 ] || error "nlink is $nlink, expected 0"
+       exec 173<&-
+}
+run_test 31n "check link count of unlinked file"
+
 cleanup_test32_mount() {
        trap 0
        $UMOUNT $DIR/$tdir/ext2-mountpoint
@@ -2446,6 +2461,8 @@ test_34h() {
        local sz=1000
 
        dd if=/dev/zero of=$DIR/$tfile bs=1M count=10 || error
+       sync # Flush the cache so that multiop below does not block on cache
+            # flush when getting the group lock
        $MULTIOP $DIR/$tfile OG${gid}T${sz}g${gid}c &
        MULTIPID=$!
        sleep 2
@@ -5513,7 +5530,6 @@ test_101a() {
        local s
        local discard
        local nreads=10000
-       [ "$CPU" = "UML" ] && nreads=1000
        local cache_limit=32
 
        $LCTL set_param -n osc.*-osc*.rpc_stats 0
@@ -6471,6 +6487,7 @@ test_117() # bug 10891
 }
 run_test 117 "verify fsfilt_extend =========="
 
+NO_SLOW_RESENDCOUNT=4
 export OLD_RESENDCOUNT=""
 set_resend_count () {
        local PROC_RESENDCOUNT="osc.${FSNAME}-OST*-osc-*.resend_count"
@@ -6479,7 +6496,8 @@ set_resend_count () {
        echo resend_count is set to $(lctl get_param -n $PROC_RESENDCOUNT)
 }
 
-[ "$SLOW" = "no" ] && set_resend_count 4 # for reduce test_118* time (bug 14842)
+# for reduce test_118* time (b=14842)
+[ "$SLOW" = "no" ] && set_resend_count $NO_SLOW_RESENDCOUNT
 
 # Reset async IO behavior after error case
 reset_async() {
@@ -6549,6 +6567,10 @@ run_test 118b "Reclaim dirty pages on fatal error =========="
 test_118c()
 {
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+
+       # for 118c, restore the original resend count, LU-1940
+       [ "$SLOW" = "no" ] && [ -n "$OLD_RESENDCOUNT" ] &&
+                               set_resend_count $OLD_RESENDCOUNT
        remote_ost_nodsh && skip "remote OST with nodsh" && return
 
        reset_async
@@ -6591,6 +6613,9 @@ test_118c()
 }
 run_test 118c "Fsync blocks on EROFS until dirty pages are flushed =========="
 
+# continue to use small resend count to reduce test_118* time (b=14842)
+[ "$SLOW" = "no" ] && set_resend_count $NO_SLOW_RESENDCOUNT
+
 test_118d()
 {
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
@@ -7886,7 +7911,7 @@ get_ost_param() {
                 [ x$gl = x"" ] && gl=0
                 gl_sum=$((gl_sum + gl))
         done
-        echo $gl
+        echo $gl_sum
 }
 
 som_mode_switch() {
@@ -8249,6 +8274,36 @@ test_133e() {
 }
 run_test 133e "Verifying OST {read,write}_bytes nid stats ================="
 
+test_133f() {
+       local proc_dirs="/proc/fs/lustre/ /proc/sys/lnet/ /proc/sys/lustre/"
+       local facet
+
+       # First without trusting modes.
+       find $proc_dirs \
+               -exec cat '{}' \; &> /dev/null
+
+       # Second verifying readability.
+       find $proc_dirs \
+               -type f \
+               -readable \
+               -exec cat '{}' \; > /dev/null ||
+                       error "proc file read failed"
+
+       for facet in $SINGLEMDS ost1; do
+               do_facet $facet find $proc_dirs \
+                       -not -name req_history \
+                       -exec cat '{}' \\\; &> /dev/null
+
+           do_facet $facet     find $proc_dirs \
+                       -not -name req_history \
+                       -type f \
+                       -readable \
+                       -exec cat '{}' \\\; > /dev/null ||
+                               error "proc file read failed"
+       done
+}
+run_test 133f "Check for LBUGs/Oopses/unreadable files in /proc"
+
 test_140() { #bug-17379
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
         test_mkdir -p $DIR/$tdir || error "Creating dir $DIR/$tdir"
@@ -9371,23 +9426,26 @@ run_test 184b "Forbidden layout swap (will generate errors)"
 test_184c() {
        check_swap_layouts_support && return 0
 
-       dir0=$DIR/$tdir/$testnum
+       local dir0=$DIR/$tdir/$testnum
        mkdir -p $dir0 || error "creating dir $dir0"
-       ref1=$dir0/ref1
-       ref2=$dir0/ref2
-       file1=$dir0/file1
-       file2=$dir0/file2
+
+       local ref1=$dir0/ref1
+       local ref2=$dir0/ref2
+       local file1=$dir0/file1
+       local file2=$dir0/file2
        # create a file large enough for the concurent test
        dd if=/dev/urandom of=$ref1 bs=1M count=$((RANDOM % 50 + 20))
        dd if=/dev/urandom of=$ref2 bs=1M count=$((RANDOM % 50 + 20))
        echo "ref file size: ref1(`stat -c %s $ref1`), ref2(`stat -c %s $ref2`)"
 
        cp $ref2 $file2
-       dd if=$ref1 of=$file1 bs=64k &
+       dd if=$ref1 of=$file1 bs=16k &
+       local DD_PID=$!
+
        sleep 0.$((RANDOM % 5 + 1))
 
        $LFS swap_layouts $file1 $file2
-       rc=$?
+       local rc=$?
        wait $DD_PID
        [[ $? == 0 ]] || error "concurrent write on $file1 failed"
        [[ $rc == 0 ]] || error "swap of $file1 and $file2 failed"
@@ -9398,7 +9456,7 @@ test_184c() {
        remaining=$((remaining - copied))
        echo "Copied $copied bytes before swapping layout..."
 
-       cmp -n $copied $file1 $ref2 ||
+       cmp -n $copied $file1 $ref2 | grep differ &&
                error "Content mismatch [0, $copied) of ref2 and file1"
        cmp -n $copied $file2 $ref1 ||
                error "Content mismatch [0, $copied) of ref1 and file2"