X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Fsanityn.sh;h=63b2aa771ddfdfe6515ca52075835241ec3cae5f;hb=b00779a40f744c01863f5f2b6a90e6e8cd3ca093;hp=d79f0384ab59a7ac5e7ba33c25b1a02614a9e1f2;hpb=0a2a9b76c9e778e4ac8636538aa5b4f9eef2102f;p=fs%2Flustre-release.git diff --git a/lustre/tests/sanityn.sh b/lustre/tests/sanityn.sh index d79f038..63b2aa7 100644 --- a/lustre/tests/sanityn.sh +++ b/lustre/tests/sanityn.sh @@ -11,9 +11,6 @@ ALWAYS_EXCEPT=" 14b 18c 19 22 28 29 35 grep -q 'Enterprise Server 10' /etc/SuSE-release 2> /dev/null && ALWAYS_EXCEPT="$ALWAYS_EXCEPT 11 14" || true -# Tests that fail on uml -[ "$UML" = "true" ] && EXCEPT="$EXCEPT 7" - # It will be ported soon. EXCEPT="$EXCEPT 22" @@ -43,6 +40,10 @@ init_test_env $@ . ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh} init_logging +[ $(facet_fstype $SINGLEMDS) = "zfs" ] && +# bug number for skipped test: LU-2840 LU-2776 + ALWAYS_EXCEPT="$ALWAYS_EXCEPT 21 51a" + [ "$SLOW" = "no" ] && EXCEPT_SLOW="12 23 33a" FAIL_ON_ERROR=false @@ -428,14 +429,14 @@ test_19() { # bug3811 local node=$(facet_active_host ost1) # check whether obdfilter is cache capable at all - if ! get_obdfilter_param $node '' read_cache_enable >/dev/null; then + if ! get_osd_param $node '' read_cache_enable >/dev/null; then echo "not cache-capable obdfilter" return 0 fi - local MAX=$(get_obdfilter_param $node '' readcache_max_filesize | \ + local MAX=$(get_osd_param $node '' readcache_max_filesize | \ head -n 1) - set_obdfilter_param $node '' readcache_max_filesize 4096 + set_osd_param $node '' readcache_max_filesize 4096 dd if=/dev/urandom of=$TMP/$tfile bs=512k count=32 local SUM=$(cksum $TMP/$tfile | cut -d" " -f 1,2) cp $TMP/$tfile $DIR1/$tfile @@ -450,7 +451,7 @@ test_19() { # bug3811 [ "$(cat $TMP/sum2)" = "$SUM" ] || \ error "$DIR2/$tfile $(cat $TMP/sum2) != $SUM" done - set_obdfilter_param $node '' readcache_max_filesize $MAX + set_osd_param $node '' readcache_max_filesize $MAX rm $DIR1/$tfile } run_test 19 "test concurrent uncached read races ===============" @@ -471,18 +472,18 @@ run_test 20 "test extra readahead page left in cache ====" cleanup_21() { trap 0 - umount $DIR1/d21 + umount $DIR1/$tdir } test_21() { # Bug 5907 - test_mkdir $DIR1/d21 - mount /etc $DIR1/d21 --bind || error "mount failed" # Poor man's mount. + test_mkdir $DIR1/$tdir + mount /etc $DIR1/$tdir --bind || error "mount failed" # Poor man's mount. trap cleanup_21 EXIT - rmdir -v $DIR1/d21 && error "Removed mounted directory" - rmdir -v $DIR2/d21 && echo "Removed mounted directory from another mountpoint, needs to be fixed" - test -d $DIR1/d21 || error "Mounted directory disappeared" + rmdir -v $DIR1/$tdir && error "Removed mounted directory" + rmdir -v $DIR2/$tdir && echo "Removed mounted directory from another mountpoint, needs to be fixed" + test -d $DIR1/$tdir || error "Mounted directory disappeared" cleanup_21 - test -d $DIR2/d21 || test -d $DIR1/d21 && error "Removed dir still visible after umount" + test -d $DIR2/$tdir || test -d $DIR1/$tdir && error "Removed dir still visible after umount" true } run_test 21 " Try to remove mountpoint on another dir ====" @@ -960,10 +961,21 @@ get_ost_lock_timeouts() { echo $locks } +cleanup_34() { + local i + trap 0 + do_nodes $(comma_list $(osts_nodes)) \ + "lctl set_param -n fail_loc=0 2>/dev/null || true" + for i in $(seq $OSTCOUNT); do + wait_osc_import_state client ost$i FULL + done +} + test_34() { #16129 local OPER local lock_in local lock_out + trap cleanup_34 EXIT RETURN for OPER in notimeout timeout ; do rm $DIR1/$tfile 2>/dev/null lock_in=$(get_ost_lock_timeouts) @@ -1002,6 +1014,7 @@ test_34() { #16129 fi fi done + cleanup_34 } run_test 34 "no lock timeout under IO" @@ -1970,7 +1983,7 @@ test_45g() { mv $DIR1/$tfile $DIR1/$tfile-2 & PID1=$! sleep 1 - stat $DIR2/$tfile > /dev/null && "stat must fail" + stat $DIR2/$tfile > /dev/null && error "stat must fail" check_pdo_conflict $PID1 && { wait $PID1; error "getattr isn't blocked"; } rm -r $DIR1/* return 0 @@ -2258,6 +2271,81 @@ test_50() { } run_test 50 "osc lvb attrs: enqueue vs. CP AST ==============" +test_51a() { + local filesize + local origfile=/etc/hosts + + filesize=`stat -c %s $origfile` + + # create an empty file + $MCREATE $DIR1/$tfile + # cache layout lock on both mount point + stat $DIR1/$tfile > /dev/null + stat $DIR2/$tfile > /dev/null + + # open and sleep 2 seconds then read + $MULTIOP $DIR2/$tfile o_2r${filesize}c & + local pid=$! + sleep 1 + + # create the layout of testing file + dd if=$origfile of=$DIR1/$tfile conv=notrunc > /dev/null + + # MULTIOP proc should be able to read enough bytes and exit + sleep 2 + kill -0 $pid && error "multiop is still there" + cmp $origfile $DIR2/$tfile || error "$MCREATE and $DIR2/$tfile differs" + + rm -f $DIR1/$tfile +} +run_test 51a "layout lock: refresh layout should work" + +test_51b() { + local tmpfile=`mktemp` + + # create an empty file + $MCREATE $DIR1/$tfile + + # delay glimpse so that layout has changed when glimpse finish +#define OBD_FAIL_GLIMPSE_DELAY 0x1404 + $LCTL set_param fail_loc=0x1404 + stat -c %s $DIR2/$tfile |tee $tmpfile & + local pid=$! + sleep 1 + + # create layout of testing file + dd if=/dev/zero of=$DIR1/$tfile bs=1k count=1 conv=notrunc > /dev/null + + wait $pid + local fsize=`cat $tmpfile` + + [ x$fsize = x1024 ] || error "file size is $fsize, should be 1024" + + rm -f $DIR1/$tfile $tmpfile +} +run_test 51b "layout lock: glimpse should be able to restart if layout changed" + +test_51c() { + # create an empty file + $MCREATE $DIR1/$tfile + +#define OBD_FAIL_MDS_LL_BLOCK 0x172 + $LCTL set_param fail_loc=0x172 + + # change the layout of testing file + echo "Setting layout ..." + $LFS setstripe -c $OSTCOUNT $DIR1/$tfile & + pid=$! + sleep 1 + + # get layout of this file should wait until dd is finished + local stripecnt=`$LFS getstripe -c $DIR2/$tfile` + [ $stripecnt -eq $OSTCOUNT ] || error "layout wrong" + + rm -f $DIR1/$tfile +} +run_test 51c "layout lock: IT_LAYOUT blocked and correct layout can be returned" + test_60() { [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.3.0) ]] || { skip "Need MDS version at least 2.3.0"; return; } @@ -2307,7 +2395,7 @@ test_60() { } run_test 60 "Verify data_version behaviour" -test_70() { +test_70a() { local test_dir=$tdir/test_dir mkdir -p $DIR1/$tdir @@ -2323,7 +2411,26 @@ test_70() { cd $DIR2/$tdir || error "exit directory" } -run_test 70 "cd directory && rm directory" +run_test 70a "cd directory && rm directory" + +test_70b() { # LU-2781 + local i + mkdir -p $DIR1/$tdir + + touch $DIR1/$tdir/file + for ((i = 0; i < 32; i++)); do + $LFS rm_entry $DIR1/$tdir/non_existent_dir &>/dev/null + done + rm $DIR1/$tdir/file || error "cannot remove file after rm_entry" + + touch $DIR1/$tdir/file + $LFS mkdir -i0 $DIR1/$tdir/test_dir + $LFS rm_entry $DIR1/$tdir/test_dir &>/dev/null + rm -rf $DIR1/$tdir/test_dir || + error "cannot remove directory after rm_entry" + rm $DIR1/$tdir/file || error "cannot remove file after rm_entry" +} +run_test 70b "remove files after calling rm_entry" log "cleanup: ======================================================"