Whamcloud - gitweb
LU-3703 tests: skip getfattr part of sanity test 234
[fs/lustre-release.git] / lustre / tests / sanity.sh
index b15303e..db9807c 100644 (file)
@@ -3093,6 +3093,37 @@ test_39m() {
 }
 run_test 39m "test atime and mtime before 1970"
 
+test_39n() { # LU-3832
+       local atime_diff=$(do_facet $SINGLEMDS \
+               lctl get_param -n mdd.*MDT0000*.atime_diff)
+       local atime0
+       local atime1
+       local atime2
+
+       do_facet $SINGLEMDS lctl set_param -n mdd.*MDT0000*.atime_diff=1
+
+       rm -rf $DIR/$tfile
+       dd if=/dev/zero of=$DIR/$tfile bs=4096 count=1 status=noxfer
+       atime0=$(stat -c %X $DIR/$tfile)
+
+       sleep 5
+       $MULTIOP $DIR/$tfile oO_RDONLY:O_NOATIME:r4096c
+       atime1=$(stat -c %X $DIR/$tfile)
+
+       sleep 5
+       cancel_lru_locks mdc
+       cancel_lru_locks osc
+       $MULTIOP $DIR/$tfile oO_RDONLY:O_NOATIME:r4096c
+       atime2=$(stat -c %X $DIR/$tfile)
+
+       do_facet $SINGLEMDS \
+               lctl set_param -n mdd.*MDT0000*.atime_diff=$atime_diff
+
+       [ "$atime0" -eq "$atime1" ] || error "atime0 $atime0 != atime1 $atime1"
+       [ "$atime1" -eq "$atime2" ] || error "atime0 $atime0 != atime1 $atime1"
+}
+run_test 39n "check that O_NOATIME is honored"
+
 test_40() {
        dd if=/dev/zero of=$DIR/$tfile bs=4096 count=1
        $RUNAS $OPENFILE -f O_WRONLY:O_TRUNC $DIR/$tfile &&
@@ -5834,40 +5865,31 @@ test_101c() {
        local STRIPE_SIZE=1048576
        local FILE_LENGTH=$((STRIPE_SIZE*100))
        local nreads=10000
-       local osc
-
-    setup_test101bc
+       local osc_rpc_stats
 
-    cancel_lru_locks osc
-    $LCTL set_param osc.*.rpc_stats 0
-    $READS -f $DIR/$tfile -s$FILE_LENGTH -b65536 -n$nreads -t 180
-    for osc in $($LCTL get_param -N osc.*); do
-        if [ "$osc" == "osc.num_refs" ]; then
-            continue
-        fi
-
-        local lines=$($LCTL get_param -n ${osc}.rpc_stats | wc | awk '{print $1}')
-        if [ $lines -le 20 ]; then
-            continue
-        fi
+       setup_test101bc
 
-        local rpc4k=$($LCTL get_param -n ${osc}.rpc_stats |
-                                     awk '$1 == "1:" { print $2; exit; }')
-        local rpc8k=$($LCTL get_param -n ${osc}.rpc_stats |
-                                     awk '$1 == "2:" { print $2; exit; }')
-        local rpc16k=$($LCTL get_param -n ${osc}.rpc_stats |
-                                     awk '$1 == "4:" { print $2; exit; }')
-        local rpc32k=$($LCTL get_param -n ${osc}.rpc_stats |
-                                     awk '$1 == "8:" { print $2; exit; }')
-
-        [ $rpc4k != 0 ]  && error "Small 4k read IO ${rpc4k}!"
-        [ $rpc8k != 0 ]  && error "Small 8k read IO ${rpc8k}!"
-        [ $rpc16k != 0 ] && error "Small 16k read IO ${rpc16k}!"
-        [ $rpc32k != 0 ] && error "Small 32k read IO ${rpc32k}!"
-        echo "${osc} rpc check passed!"
-    done
-    cleanup_test101bc
-    true
+       cancel_lru_locks osc
+       $LCTL set_param osc.*.rpc_stats 0
+       $READS -f $DIR/$tfile -s$FILE_LENGTH -b65536 -n$nreads -t 180
+       for osc_rpc_stats in $($LCTL get_param -N osc.*.rpc_stats); do
+               local stats=$($LCTL get_param -n $osc_rpc_stats)
+               local lines=$(echo "$stats" | awk 'END {print NR;}')
+               local size
+
+               if [ $lines -le 20 ]; then
+                       continue
+               fi
+               for size in 1 2 4 8; do
+                       local rpc=$(echo "$stats" |
+                                   awk '($1 == "'$size':") {print $2; exit; }')
+                       [ $rpc != 0 ] &&
+                               error "Small $((size*4))k read IO $rpc !"
+               done
+               echo "$osc_rpc_stats check passed!"
+       done
+       cleanup_test101bc
+       true
 }
 run_test 101c "check stripe_size aligned read-ahead ================="
 
@@ -9479,15 +9501,19 @@ run_test 161b "link ea sanity under remote directory"
 
 test_161c() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.1.5) ]] &&
+               skip "Need MDS version at least 2.1.5" && return
 
        # define CLF_RENAME_LAST 0x0001
        # rename overwrite a target having nlink = 1 (changelog flag 0x1)
        local USER=$(do_facet $SINGLEMDS $LCTL --device $MDT0 \
                changelog_register -n)
+       rm -rf $DIR/$tdir
        mkdir -p $DIR/$tdir
        touch $DIR/$tdir/foo_161c
        touch $DIR/$tdir/bar_161c
        mv -f $DIR/$tdir/foo_161c $DIR/$tdir/bar_161c
+       $LFS changelog $MDT0 | grep RENME
        local flags=$($LFS changelog $MDT0 | grep RENME | tail -1 | \
                cut -f5 -d' ')
        $LFS changelog_clear $MDT0 $USER 0
@@ -9504,6 +9530,7 @@ test_161c() {
        touch $DIR/$tdir/bar_161c
        ln $DIR/$tdir/bar_161c $DIR/$tdir/foobar_161c
        mv -f $DIR/$tdir/foo_161c $DIR/$tdir/bar_161c
+       $LFS changelog $MDT0 | grep RENME
        flags=$($LFS changelog $MDT0 | grep RENME | tail -1 | cut -f5 -d' ')
        $LFS changelog_clear $MDT0 $USER 0
        if [ x$flags != "x0x0" ]; then
@@ -9517,6 +9544,7 @@ test_161c() {
        # rename doesn't overwrite a target (changelog flag 0x0)
        touch $DIR/$tdir/foo_161c
        mv -f $DIR/$tdir/foo_161c $DIR/$tdir/foo2_161c
+       $LFS changelog $MDT0 | grep RENME
        flags=$($LFS changelog $MDT0 | grep RENME | tail -1 | cut -f5 -d' ')
        $LFS changelog_clear $MDT0 $USER 0
        if [ x$flags != "x0x0" ]; then
@@ -9530,6 +9558,7 @@ test_161c() {
        # define CLF_UNLINK_LAST 0x0001
        # unlink a file having nlink = 1 (changelog flag 0x1)
        rm -f $DIR/$tdir/foo2_161c
+       $LFS changelog $MDT0 | grep UNLNK
        flags=$($LFS changelog $MDT0 | grep UNLNK | tail -1 | cut -f5 -d' ')
        $LFS changelog_clear $MDT0 $USER 0
        if [ x$flags != "x0x1" ]; then
@@ -9543,6 +9572,7 @@ test_161c() {
        # unlink a file having nlink > 1 (changelog flag 0x0)
        ln -f $DIR/$tdir/bar_161c $DIR/$tdir/foobar_161c
        rm -f $DIR/$tdir/foobar_161c
+       $LFS changelog $MDT0 | grep UNLNK
        flags=$($LFS changelog $MDT0 | grep UNLNK | tail -1 | cut -f5 -d' ')
        $LFS changelog_clear $MDT0 $USER 0
        if [ x$flags != "x0x0" ]; then
@@ -11572,9 +11602,12 @@ test_234() {
        $LCTL set_param fail_loc=0x1405
        setfattr -n user.attr -v value $DIR/$tdir/$tfile &&
                error "setfattr should have failed with ENOMEM"
-       # attr pre-2.4.44-7 had a bug with rc
-       getfattr -n user.attr $DIR/$tdir/$tfile &&
-               error "getfattr should have failed with ENOMEM"
+       if [ ! -f /etc/SuSE-release ]; then
+               # attr pre-2.4.44-7 had a bug with rc
+               # LU-3703 - SLES clients have older attr
+               getfattr -n user.attr $DIR/$tdir/$tfile &&
+                       error "getfattr should have failed with ENOMEM"
+       fi
        $LCTL set_param fail_loc=0x0
        rm -rf $DIR/$tdir