X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Fsanity.sh;h=e9925077ddb5f62d359e79b87e3ed7f6d5e5ce6e;hb=6adef75ba693e4d0d5328c7c2ddd353b5846f947;hp=e0acee1e5bda714395d07fb30c6f2ead0da09e44;hpb=becbc7263598e10212f1dcb8eb2cc9446c3c01bb;p=fs%2Flustre-release.git diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index e0acee1..e992507 100644 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -466,6 +466,7 @@ test_17g() { run_test 17g "symlinks: really long symlink name ===============================" test_17h() { #bug 17378 + remote_mds_nodsh && skip "remote MDS with nodsh" && return mkdir -p $DIR/$tdir $SETSTRIPE $DIR/$tdir -c -1 #define OBD_FAIL_MDS_LOV_PREP_CREATE 0x141 @@ -475,6 +476,7 @@ test_17h() { #bug 17378 run_test 17h "create objects: lov_free_memmd() doesn't lbug" test_17i() { #bug 20018 + remote_mds_nodsh && skip "remote MDS with nodsh" && return mkdir -p $DIR/$tdir local foo=$DIR/$tdir/$tfile ln -s $foo $foo || error "create symlink failed" @@ -1043,8 +1045,7 @@ exhaust_precreations() { local MDSIDX=$(get_mds_dir "$DIR/$tdir") echo OSTIDX=$OSTIDX MDSIDX=$MDSIDX - local OST=$(lfs osts | grep ${OSTIDX}": " | \ - awk '{print $2}' | sed -e 's/_UUID$//') + local OST=$(ostname_from_index $OSTIDX) local MDT_INDEX=$(lfs df | grep "\[MDT:$((MDSIDX - 1))\]" | awk '{print $1}' | \ sed -e 's/_UUID$//;s/^.*-//') @@ -1138,6 +1139,7 @@ test_27q() { reset_enospc rm -f $DIR/$tdir/$tfile + mkdir -p $DIR/$tdir $MCREATE $DIR/$tdir/$tfile || error "mcreate $DIR/$tdir/$tfile failed" $TRUNCATE $DIR/$tdir/$tfile 80000000 ||error "truncate $DIR/$tdir/$tfile failed" $CHECKSTAT -s 80000000 $DIR/$tdir/$tfile || error "checkstat failed" @@ -1220,7 +1222,7 @@ test_27v() { # bug 4900 touch $DIR/$tdir/$tfile #define OBD_FAIL_TGT_DELAY_PRECREATE 0x705 # all except ost1 - for (( i=0; i < OSTCOUNT; i++ )) ; do + for (( i=1; i < OSTCOUNT; i++ )); do do_facet ost$i lctl set_param fail_loc=0x705 done local START=`date +%s` @@ -1257,10 +1259,11 @@ test_27w() { # bug 10997 run_test 27w "check lfs setstripe -c -s -i options =============" test_27x() { + remote_ost_nodsh && skip "remote OST with nodsh" && return [ "$OSTCOUNT" -lt "2" ] && skip_env "$OSTCOUNT < 2 OSTs" && return OFFSET=$(($OSTCOUNT - 1)) OSTIDX=0 - local OST=$(lfs osts | awk '/'${OSTIDX}': / { print $2 }' | sed -e 's/_UUID$//') + local OST=$(ostname_from_index $OSTIDX) mkdir -p $DIR/$tdir $SETSTRIPE $DIR/$tdir -c 1 # 1 stripe per file @@ -1278,6 +1281,7 @@ run_test 27x "create files while OST0 is degraded" test_27y() { [ "$OSTCOUNT" -lt "2" ] && skip_env "$OSTCOUNT < 2 OSTs -- skipping" && return remote_mds_nodsh && skip "remote MDS with nodsh" && return + remote_ost_nodsh && skip "remote OST with nodsh" && return local mdtosc=$(get_mdtosc_proc_path $SINGLEMDS $FSNAME-OST0000) local last_id=$(do_facet $SINGLEMDS lctl get_param -n \ @@ -1300,14 +1304,14 @@ test_27y() { } fi done - OSTIDX=$(lfs osts | grep ${OST} | awk '{print $1}' | sed -e 's/://') + OSTIDX=$(index_from_ostuuid $OST) mkdir -p $DIR/$tdir $SETSTRIPE $DIR/$tdir -c 1 # 1 stripe / file - do_facet ost$OSTIDX lctl set_param -n obdfilter.$OST.degraded 1 + do_facet ost$((OSTIDX+1)) lctl set_param -n obdfilter.$OST.degraded 1 sleep_maxage createmany -o $DIR/$tdir/$tfile $fcount - do_facet ost$OSTIDX lctl set_param -n obdfilter.$OST.degraded 0 + do_facet ost$((OSTIDX+1)) lctl set_param -n obdfilter.$OST.degraded 0 for i in `seq 0 $OFFSET`; do [ `$GETSTRIPE $DIR/$tdir/$tfile$i | grep -A 10 obdidx | awk '{print $1}'| grep -w "$OSTIDX"` ] || \ @@ -1376,6 +1380,7 @@ check_seq_oid() } test_27z() { + remote_ost_nodsh && skip "remote OST with nodsh" && return mkdir -p $DIR/$tdir $SETSTRIPE $DIR/$tdir/$tfile-1 -c 1 -o 0 -s 1m || { error "setstripe -c -1 failed"; return 1; } @@ -1877,6 +1882,7 @@ test_33c() { local write_bytes local all_zeros + remote_ost_nodsh && skip "remote OST with nodsh" && return all_zeros=: rm -fr $DIR/d33 mkdir -p $DIR/d33 @@ -2412,6 +2418,7 @@ run_test 39k "write, utime, close, stat ========================" TEST_39_ATIME=`date -d "1 year" +%s` test_39l() { + remote_mds_nodsh && skip "remote MDS with nodsh" && return local atime_diff=$(do_facet $SINGLEMDS lctl get_param -n mdd.*.atime_diff) mkdir -p $DIR/$tdir @@ -3259,7 +3266,7 @@ test_56a() { # was test_56 [ "$OSTCOUNT" -lt 2 ] && \ skip_env "skipping other lfs getstripe --obd test" && return OSTIDX=1 - OBDUUID=$(lfs osts | grep ${OSTIDX}": " | awk '{print $2}') + OBDUUID=$(ostuuid_from_index $OSTIDX) FILENUM=`$GETSTRIPE -ir $DIR/d56 | grep -x $OSTIDX | wc -l` FOUND=`$GETSTRIPE -r --obd $OBDUUID $DIR/d56 | grep obdidx | wc -l` [ $FOUND -eq $FILENUM ] || \ @@ -3513,6 +3520,7 @@ test_57a() { run_test 57a "verify MDS filesystem created with large inodes ==" test_57b() { + remote_mds_nodsh && skip "remote MDS with nodsh" && return local dir=$DIR/d57b local FILECOUNT=100 @@ -3584,6 +3592,7 @@ run_test 59 "verify cancellation of llog records async =========" TEST60_HEAD="test_60 run $RANDOM" test_60a() { + remote_mgs_nodsh && skip "remote MGS with nodsh" && return [ ! -f run-llog.sh ] && skip_env "missing subtest run-llog.sh" && return log "$TEST60_HEAD - from kernel mode" do_facet mgs sh run-llog.sh @@ -4171,13 +4180,12 @@ set_checksums() return 0 } -export ORIG_CSUM_TYPE="" +export ORIG_CSUM_TYPE="`lctl get_param -n osc/*osc-[^mM]*/checksum_type | + sed 's/.*\[\(.*\)\].*/\1/g' | head -n1`" CKSUM_TYPES=${CKSUM_TYPES:-"crc32 adler"} +[ "$ORIG_CSUM_TYPE" = "crc32c" ] && CKSUM_TYPES="$CKSUM_TYPES crc32c" set_checksum_type() { - [ "$ORIG_CSUM_TYPE" ] || \ - ORIG_CSUM_TYPE=`lctl get_param -n osc/*osc-[^mM]*/checksum_type | - sed 's/.*\[\(.*\)\].*/\1/g' | head -n1` lctl set_param -n osc.*osc-[^mM]*.checksum_type $1 log "set checksum type to $1" return 0 @@ -4428,6 +4436,7 @@ test_80() { # bug 10718 run_test 80 "Page eviction is equally fast at high offsets too ====" test_81a() { # LU-456 + remote_ost_nodsh && skip "remote OST with nodsh" && return # define OBD_FAIL_OST_MAPBLK_ENOSPC 0x228 # MUST OR with the OBD_FAIL_ONCE (0x80000000) do_facet ost0 lctl set_param fail_loc=0x80000228 @@ -4443,6 +4452,7 @@ test_81a() { # LU-456 run_test 81a "OST should retry write when get -ENOSPC ===============" test_81b() { # LU-456 + remote_ost_nodsh && skip "remote OST with nodsh" && return # define OBD_FAIL_OST_MAPBLK_ENOSPC 0x228 # Don't OR with the OBD_FAIL_ONCE (0x80000000) do_facet ost0 lctl set_param fail_loc=0x228 @@ -5087,10 +5097,13 @@ test_104a() { lfs df $DIR/$tfile || error "lfs df $DIR/$tfile failed" lfs df -ih $DIR/$tfile || error "lfs df -ih $DIR/$tfile failed" - OSC=`lctl get_param -n devices | awk '/-osc-/ {print $4}' | head -n 1` + OSC=`lctl dl |grep OST0000-osc-[^M] |awk '{print $4}'` lctl --device %$OSC deactivate lfs df || error "lfs df with deactivated OSC failed" - lctl --device %$OSC recover + lctl --device %$OSC activate + # wait the osc back to normal + wait_osc_import_state client ost FULL + lfs df || error "lfs df with reactivated OSC failed" rm -f $DIR/$tfile } @@ -5714,6 +5727,15 @@ test_118k() } run_test 118k "bio alloc -ENOMEM and IO TERM handling =========" +test_118l() +{ + # LU-646 + mkdir -p $DIR/$tdir + multiop $DIR/$tdir Dy || error "fsync dir failed" + rm -rf $DIR/$tdir +} +run_test 118l "fsync dir =========" + [ "$SLOW" = "no" ] && [ -n "$OLD_RESENDCOUNT" ] && set_resend_count $OLD_RESENDCOUNT test_119a() # bug 11737 @@ -6728,6 +6750,7 @@ som_mode_switch() { } test_132() { #1028, SOM + remote_mds_nodsh && skip "remote MDS with nodsh" && return local num=$(get_mds_dir $DIR) local mymds=mds${num} local MOUNTOPT_SAVE=$MOUNTOPT @@ -6772,7 +6795,7 @@ check_stats() { case $1 in $SINGLEMDS) res=`do_facet $SINGLEMDS $LCTL get_param mdt.$FSNAME-MDT0000.md_stats | grep "$2"` ;; - ost) res=`do_facet ost $LCTL get_param obdfilter.$FSNAME-OST0000.stats | grep "$2"` + ost) res=`do_facet ost1 $LCTL get_param obdfilter.$FSNAME-OST0000.stats | grep "$2"` ;; *) error "Wrong argument $1" ;; esac @@ -6786,12 +6809,14 @@ check_stats() { } test_133a() { + remote_ost_nodsh && skip "remote OST with nodsh" && return + remote_mds_nodsh && skip "remote MDS with nodsh" && return local testdir=$DIR/${tdir}/stats_testdir mkdir -p $DIR/${tdir} # clear stats. do_facet $SINGLEMDS $LCTL set_param mdt.*.md_stats=clear - do_facet ost $LCTL set_param obdfilter.*.stats=clear + do_facet ost1 $LCTL set_param obdfilter.*.stats=clear # verify mdt stats first. mkdir ${testdir} || error "mkdir failed" @@ -6815,6 +6840,8 @@ test_133a() { run_test 133a "Verifying MDT stats ========================================" test_133b() { + remote_ost_nodsh && skip "remote OST with nodsh" && return + remote_mds_nodsh && skip "remote MDS with nodsh" && return local testdir=$DIR/${tdir}/stats_testdir mkdir -p ${testdir} || error "mkdir failed" touch ${testdir}/${tfile} || "touch failed" @@ -6822,7 +6849,7 @@ test_133b() { # clear stats. do_facet $SINGLEMDS $LCTL set_param mdt.*.md_stats=clear - do_facet ost $LCTL set_param obdfilter.*.stats=clear + do_facet ost1 $LCTL set_param obdfilter.*.stats=clear # extra mdt stats verification. chmod 444 ${testdir}/${tfile} || error "chmod failed" @@ -6835,6 +6862,8 @@ test_133b() { run_test 133b "Verifying extra MDT stats ==================================" test_133c() { + remote_ost_nodsh && skip "remote OST with nodsh" && return + remote_mds_nodsh && skip "remote MDS with nodsh" && return local testdir=$DIR/${tdir}/stats_testdir mkdir -p ${testdir} || error "mkdir failed" @@ -6845,7 +6874,7 @@ test_133c() { # clear stats. do_facet $SINGLEMDS $LCTL set_param mdt.*.md_stats=clear - do_facet ost $LCTL set_param obdfilter.*.stats=clear + do_facet ost1 $LCTL set_param obdfilter.*.stats=clear dd if=/dev/zero of=${testdir}/${tfile} conv=notrunc bs=1024k count=1 || error "dd failed" sync @@ -7064,6 +7093,7 @@ test_155_small_load() { } test_155_big_load() { + remote_ost_nodsh && skip "remote OST with nodsh" && return local temp=$TMP/$tfile local file=$DIR/$tfile @@ -7295,6 +7325,7 @@ err17935 () { fi } test_160() { + remote_mds_nodsh && skip "remote MDS with nodsh" && return USER=$(do_facet $SINGLEMDS lctl --device $MDT0 changelog_register -n) echo "Registered as changelog user $USER" do_facet $SINGLEMDS lctl get_param -n mdd.$MDT0.changelog_users | \ @@ -7620,6 +7651,7 @@ obdecho_create_test() { } test_180a() { + remote_ost_nodsh && skip "remote OST with nodsh" && return local rc=0 local rmmod_local=0 @@ -7629,8 +7661,10 @@ test_180a() { fi local osc=$($LCTL dl | grep -v mdt | awk '$3 == "osc" {print $4; exit}') - local host=$(awk '/current_connection:/ {print $2}' /proc/fs/lustre/osc/$osc/import) - local target=$(awk '/target:/ {print $2}' /proc/fs/lustre/osc/$osc/import) + local host=$(lctl get_param -n osc.$osc.import | + awk '/current_connection:/ {print $2}' ) + local target=$(lctl get_param -n osc.$osc.import | + awk '/target:/ {print $2}' ) target=${target%_UUID} [[ -n $target ]] && { setup_obdecho_osc $host $target || rc=1; } || rc=1 @@ -7642,15 +7676,16 @@ test_180a() { run_test 180a "test obdecho on osc" test_180b() { + remote_ost_nodsh && skip "remote OST with nodsh" && return local rc=0 local rmmod_remote=0 - do_facet ost "lsmod | grep -q obdecho || " \ - "{ insmod ${LUSTRE}/obdecho/obdecho.ko || " \ - "modprobe obdecho; }" && rmmod_remote=1 - target=$(do_facet ost $LCTL dl | awk '/obdfilter/ {print $4;exit}') - [[ -n $target ]] && { obdecho_create_test $target ost || rc=1; } - [ $rmmod_remote -eq 1 ] && do_facet ost "rmmod obdecho" + do_facet ost1 "lsmod | grep -q obdecho || " \ + "{ insmod ${LUSTRE}/obdecho/obdecho.ko || " \ + "modprobe obdecho; }" && rmmod_remote=1 + target=$(do_facet ost1 $LCTL dl | awk '/obdfilter/ {print $4;exit}') + [[ -n $target ]] && { obdecho_create_test $target ost1 || rc=1; } + [ $rmmod_remote -eq 1 ] && do_facet ost1 "rmmod obdecho" return $rc } run_test 180b "test obdecho directly on obdfilter" @@ -8152,6 +8187,7 @@ test_215() { # for bugs 18102, 21079, 21517 run_test 215 "/proc/sys/lnet exists and has proper content - bugs 18102, 21079, 21517" test_216() { # bug 20317 + remote_ost_nodsh && skip "remote OST with nodsh" && return local node local p="$TMP/sanityN-$TESTNAME.parameters" save_lustre_params $HOSTNAME "osc.*.contention_seconds" > $p @@ -8280,6 +8316,17 @@ test_220() { #LU-325 } run_test 220 "the preallocated objects in MDS still can be used if ENOSPC is returned by OST with enough disk space" +test_221() { + cp `which date` $MOUNT + + #define OBD_FAIL_LLITE_FAULT_TRUNC_RACE 0x1401 + $LCTL set_param fail_loc=0x80001401 + + $MOUNT/date > /dev/null + rm -f $MOUNT/date +} +run_test 221 "make sure fault and truncate race to not cause OOM" + # # tests that do cleanup/setup should be run at the end #