Whamcloud - gitweb
LU-2934 lnet: Add LNet Router Priority parameter
[fs/lustre-release.git] / lustre / tests / sanity.sh
index 1d47653..fcf5f72 100644 (file)
@@ -638,6 +638,9 @@ test_17n() {
 run_test 17n "run e2fsck against master/slave MDT which contains remote dir"
 
 test_17o() {
+       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.3.64) ]] &&
+               skip "Need MDS version at least 2.3.64" && return
+
        local WDIR=$DIR/${tdir}o
        local mdt_index
        local mdtdevname
@@ -1218,15 +1221,10 @@ test_27b() {
        $GETSTRIPE -c $DIR/d27/f01
        [ $($GETSTRIPE -c $DIR/d27/f01) -eq 2 ] ||
                error "two-stripe file doesn't have two stripes"
-}
-run_test 27b "create two stripe file"
-
-test_27c() {
-       [ -f $DIR/d27/f01 ] || skip "test_27b not run" && return
 
        dd if=/dev/zero of=$DIR/d27/f01 bs=4k count=4 || error "dd failed"
 }
-run_test 27c "write to two stripe file"
+run_test 27b "create and write to two stripe file"
 
 test_27d() {
        test_mkdir -p $DIR/d27
@@ -5288,68 +5286,55 @@ test_77a() { # bug 10889
        set_checksums 0
        rm -f $DIR/$tfile
 }
-run_test 77a "normal checksum read/write operation ============="
+run_test 77a "normal checksum read/write operation"
 
 test_77b() { # bug 10889
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
        $GSS && skip "could not run with gss" && return
        [ ! -f $F77_TMP ] && setup_f77
        #define OBD_FAIL_OSC_CHECKSUM_SEND       0x409
-       lctl set_param fail_loc=0x80000409
+       $LCTL set_param fail_loc=0x80000409
        set_checksums 1
-       dd if=$F77_TMP of=$DIR/f77b bs=1M count=$F77SZ conv=sync || \
+
+       dd if=$F77_TMP of=$DIR/$tfile bs=1M count=$F77SZ conv=sync ||
                error "dd error: $?"
-       lctl set_param fail_loc=0
-       set_checksums 0
-}
-run_test 77b "checksum error on client write ===================="
+       $LCTL set_param fail_loc=0
 
-test_77c() { # bug 10889
-       [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
-       $GSS && skip "could not run with gss" && return
-       [ ! -f $DIR/f77b ] && skip "requires 77b - skipping" && return
-       set_checksums 1
        for algo in $CKSUM_TYPES; do
                cancel_lru_locks osc
                set_checksum_type $algo
                #define OBD_FAIL_OSC_CHECKSUM_RECEIVE    0x408
-               lctl set_param fail_loc=0x80000408
-               cmp $F77_TMP $DIR/f77b || error "file compare failed"
-               lctl set_param fail_loc=0
+               $LCTL set_param fail_loc=0x80000408
+               cmp $F77_TMP $DIR/$tfile || error "file compare failed"
+               $LCTL set_param fail_loc=0
        done
        set_checksums 0
        set_checksum_type $ORIG_CSUM_TYPE
-       rm -f $DIR/f77b
+       rm -f $DIR/$tfile
 }
-run_test 77c "checksum error on client read ==================="
+run_test 77b "checksum error on client write, read"
 
 test_77d() { # bug 10889
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
        $GSS && skip "could not run with gss" && return
        #define OBD_FAIL_OSC_CHECKSUM_SEND       0x409
-       lctl set_param fail_loc=0x80000409
+       $LCTL set_param fail_loc=0x80000409
        set_checksums 1
-       directio write $DIR/f77 0 $F77SZ $((1024 * 1024)) || \
+       $DIRECTIO write $DIR/$tfile 0 $F77SZ $((1024 * 1024)) ||
                error "direct write: rc=$?"
-       lctl set_param fail_loc=0
+       $LCTL set_param fail_loc=0
        set_checksums 0
-}
-run_test 77d "checksum error on OST direct write ==============="
 
-test_77e() { # bug 10889
-       [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
-       $GSS && skip "could not run with gss" && return
-       [ ! -f $DIR/f77 ] && skip "requires 77d - skipping" && return
        #define OBD_FAIL_OSC_CHECKSUM_RECEIVE    0x408
-       lctl set_param fail_loc=0x80000408
+       $LCTL set_param fail_loc=0x80000408
        set_checksums 1
        cancel_lru_locks osc
-       directio read $DIR/f77 0 $F77SZ $((1024 * 1024)) || \
+       $DIRECTIO read $DIR/$tfile 0 $F77SZ $((1024 * 1024)) ||
                error "direct read: rc=$?"
-       lctl set_param fail_loc=0
+       $LCTL set_param fail_loc=0
        set_checksums 0
 }
-run_test 77e "checksum error on OST direct read ================"
+run_test 77d "checksum error on OST direct write, read"
 
 test_77f() { # bug 10889
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
@@ -5359,15 +5344,15 @@ test_77f() { # bug 10889
                cancel_lru_locks osc
                set_checksum_type $algo
                #define OBD_FAIL_OSC_CHECKSUM_SEND       0x409
-               lctl set_param fail_loc=0x409
-               directio write $DIR/f77 0 $F77SZ $((1024 * 1024)) && \
+               $LCTL set_param fail_loc=0x409
+               $DIRECTIO write $DIR/$tfile 0 $F77SZ $((1024 * 1024)) &&
                        error "direct write succeeded"
-               lctl set_param fail_loc=0
+               $LCTL set_param fail_loc=0
        done
        set_checksum_type $ORIG_CSUM_TYPE
        set_checksums 0
 }
-run_test 77f "repeat checksum error on write (expect error) ===="
+run_test 77f "repeat checksum error on write (expect error)"
 
 test_77g() { # bug 10889
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
@@ -5376,32 +5361,24 @@ test_77g() { # bug 10889
 
        [ ! -f $F77_TMP ] && setup_f77
 
-       $SETSTRIPE -c 1 -i 0 $DIR/f77g
+       $SETSTRIPE -c 1 -i 0 $DIR/$tfile
        #define OBD_FAIL_OST_CHECKSUM_RECEIVE       0x21a
        do_facet ost1 lctl set_param fail_loc=0x8000021a
        set_checksums 1
-       dd if=$F77_TMP of=$DIR/f77g bs=1M count=$F77SZ || \
+       dd if=$F77_TMP of=$DIR/$tfile bs=1M count=$F77SZ ||
                error "write error: rc=$?"
        do_facet ost1 lctl set_param fail_loc=0
        set_checksums 0
-}
-run_test 77g "checksum error on OST write ======================"
-
-test_77h() { # bug 10889
-       [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
-       $GSS && skip "could not run with gss" && return
-       remote_ost_nodsh && skip "remote OST with nodsh" && return
 
-       [ ! -f $DIR/f77g ] && skip "requires 77g - skipping" && return
        cancel_lru_locks osc
        #define OBD_FAIL_OST_CHECKSUM_SEND          0x21b
        do_facet ost1 lctl set_param fail_loc=0x8000021b
        set_checksums 1
-       cmp $F77_TMP $DIR/f77g || error "file compare failed"
+       cmp $F77_TMP $DIR/$tfile || error "file compare failed"
        do_facet ost1 lctl set_param fail_loc=0
        set_checksums 0
 }
-run_test 77h "checksum error on OST read ======================="
+run_test 77g "checksum error on OST write, read"
 
 test_77i() { # bug 13805
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
@@ -5417,7 +5394,7 @@ test_77i() { # bug 13805
        done
        remount_client $MOUNT
 }
-run_test 77i "client not supporting OSD_CONNECT_CKSUM =========="
+run_test 77i "client not supporting OSD_CONNECT_CKSUM"
 
 test_77j() { # bug 13805
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
@@ -5434,7 +5411,7 @@ test_77j() { # bug 13805
        done
        remount_client $MOUNT
 }
-run_test 77j "client only supporting ADLER32 ===================="
+run_test 77j "client only supporting ADLER32"
 
 [ "$ORIG_CSUM" ] && set_checksums $ORIG_CSUM || true
 rm -f $F77_TMP
@@ -9229,6 +9206,17 @@ changelog_chmask()
        fi
 }
 
+changelog_extract_field() {
+       local mdt=$1
+       local cltype=$2
+       local file=$3
+       local identifier=$4
+
+       $LFS changelog $mdt | gawk "/$cltype.*$file$/ {
+               print gensub(/^.* "$identifier'(\[[^\]]*\]).*$/,"\\1",1)}' |
+               tail -1
+}
+
 test_160() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
        remote_mds_nodsh && skip "remote MDS with nodsh" && return
@@ -9274,14 +9262,14 @@ test_160() {
 
        # verify contents
        echo "verifying target fid"
-       fidc=$($LFS changelog $MDT0|awk '/CREAT.*timestamp$/{print $6}'|tail -1)
+       fidc=$(changelog_extract_field $MDT0 "CREAT" "timestamp" "t=")
        fidf=$($LFS path2fid $DIR/$tdir/pics/zach/timestamp)
-       [ "$fidc" == "t=$fidf" ] ||
+       [ "$fidc" == "$fidf" ] ||
                err17935 "fid in changelog $fidc != file fid $fidf"
        echo "verifying parent fid"
-       fidc=$($LFS changelog $MDT0|awk '/CREAT.*timestamp$/{print $7}'|tail -1)
+       fidc=$(changelog_extract_field $MDT0 "CREAT" "timestamp" "p=")
        fidf=$($LFS path2fid $DIR/$tdir/pics/zach)
-       [ "$fidc" == "p=$fidf" ] ||
+       [ "$fidc" == "$fidf" ] ||
                err17935 "pfid in changelog $fidc != dir fid $fidf"
 
        USER_REC1=$($GET_CL_USERS | awk "\$1 == \"$USER\" {print \$2}")
@@ -9753,6 +9741,9 @@ test_182() {
 run_test 182 "Disable MDC RPCs semaphore wouldn't crash client ================"
 
 test_183() { # LU-2275
+       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.3.56) ]] &&
+               skip "Need MDS version at least 2.3.56" && return
+
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
        mkdir -p $DIR/$tdir || error "creating dir $DIR/$tdir"
        echo aaa > $DIR/$tdir/$tfile
@@ -10688,12 +10679,13 @@ test_215() { # for bugs 18102, 21079, 21517
 
        # /proc/sys/lnet/routes should look like this:
        # Routing disabled/enabled
-       # net hops state router
-       # where net is a string like tcp0, hops >= 0, state is up/down,
+       # net hops priority state router
+       # where net is a string like tcp0, hops > 0, priority >= 0,
+       # state is up/down,
        # router is a string like 192.168.1.1@tcp2
        L1="^Routing (disabled|enabled)$"
-       L2="^net +hops +state +router$"
-       BR="^$NET +$N +(up|down) +$NID$"
+       L2="^net +hops +priority +state +router$"
+       BR="^$NET +$N +(0|1) +(up|down) +$NID$"
        create_lnet_proc_files "routes"
        check_lnet_proc_entry "routes.out" "/proc/sys/lnet/routes" "$BR" "$L1" "$L2"
        check_lnet_proc_entry "routes.sys" "lnet.routes" "$BR" "$L1" "$L2"
@@ -11433,6 +11425,29 @@ test_233() {
 }
 run_test 233 "checking that OBF of the FS root succeeds"
 
+test_234() {
+       local p="$TMP/sanityN-$TESTNAME.parameters"
+       save_lustre_params client "llite.*.xattr_cache" > $p
+       lctl set_param llite.*.xattr_cache 1 ||
+               { skip "xattr cache is not supported"; return 0; }
+
+       mkdir -p $DIR/$tdir || error "mkdir failed"
+       touch $DIR/$tdir/$tfile || error "touch failed"
+       # OBD_FAIL_LLITE_XATTR_ENOMEM
+       $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"
+       $LCTL set_param fail_loc=0x0
+       rm -rf $DIR/$tdir
+
+       restore_lustre_params < $p
+       rm -f $p
+}
+run_test 234 "xattr cache should not crash on ENOMEM"
+
 #
 # tests that do cleanup/setup should be run at the end
 #