X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Ftests%2Fsanity-quota.sh;h=7d362c3ae6eacbfd91c53baeeeafbcb4e77e7143;hp=d752e97bc55042b70fb16f76fc31e9844cd46b8f;hb=2f347eb0da65973bfc4acbd49ad48698bf71441f;hpb=c7a42267f5740d587f726e610695f1c72818a21e diff --git a/lustre/tests/sanity-quota.sh b/lustre/tests/sanity-quota.sh index d752e97..7d362c3 100644 --- a/lustre/tests/sanity-quota.sh +++ b/lustre/tests/sanity-quota.sh @@ -48,14 +48,13 @@ LUSTRE=${LUSTRE:-`dirname $0`/..} . $LUSTRE/tests/test-framework.sh init_test_env $@ . ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh} +init_logging DIRECTIO=${DIRECTIO:-$LUSTRE/tests/directio} [ $MDSCOUNT -gt 1 ] && skip "CMD case" && exit 0 -unset ENABLE_QUOTA - -remote_mds_nodsh && skip "remote MDS with nodsh" && exit 0 -remote_ost_nodsh && skip "remote OST with nodsh" && exit 0 +require_dsh_mds || exit 0 +require_dsh_ost || exit 0 [ "$SLOW" = "no" ] && EXCEPT_SLOW="9 10 11 18b 21" @@ -66,13 +65,10 @@ QUOTALOG=${TESTSUITELOG:-$TMP/$(basename $0 .sh).log} DIR=${DIR:-$MOUNT} DIR2=${DIR2:-$MOUNT2} -check_and_setup_lustre +QUOTA_AUTO_OLD=$QUOTA_AUTO +export QUOTA_AUTO=0 -if [ x"$(som_check)" = x"enabled" ]; then - echo "Som is enabled, Quota is temporary conflicts with it" - check_and_cleanup_lustre - exit 0 -fi +check_and_setup_lustre LOVNAME=`lctl get_param -n llite.*.lov.common_name | tail -n 1` OSTCOUNT=`lctl get_param -n lov.$LOVNAME.numobd` @@ -336,8 +332,10 @@ test_1_sub() { $RUNAS dd if=/dev/zero of=$TESTFILE bs=$BLK_SZ count=$(($LIMIT/2)) || quota_error g $TSTUSR "(grp) write failure, but expect success" etime=`date +%s` delta=$((etime - stime)) - rate=$((BLK_SZ * LIMIT / 2 / delta / 1024)) - [ $rate -gt 1024 ] || error "SLOW IO for $TSTUSR (group): $rate KB/sec" + if [ $delta -gt 0 ]; then + rate=$((BLK_SZ * LIMIT / 2 / delta / 1024)) + [ $rate -gt 1024 ] || error "SLOW IO for $TSTUSR (group): $rate KB/sec" + fi log " Done" log " Write out of block quota ..." # this time maybe cache write, ignore it's failure @@ -1579,7 +1577,7 @@ test_18b() { # check if watchdog is triggered do_facet ost1 dmesg > $TMP/lustre-log-${TESTNAME}.log watchdog=`awk '/test 18b/ {start = 1;} - /Watchdog triggered/ { + /Service thread pid/ && /was inactive/ { if (start) { print; } @@ -2058,36 +2056,11 @@ test_28() { } run_test_with_stat 28 "test for consistency for qunit when setquota (18574) ===========" -test_30() -{ - local output - local LIMIT=1024 - local TESTFILE="$DIR/$tdir/$tfile" - local GRACE=10 - - mkdir -p $DIR/$tdir - chmod 0777 $DIR/$tdir - - $LFS setquota -t -u --block-grace $GRACE --inode-grace $MAX_IQ_TIME $DIR - $LFS setquota -u $TSTUSR -b $LIMIT -B 0 -i 0 -I 0 $DIR - $RUNAS dd if=/dev/zero of=$TESTFILE bs=1024 count=$((LIMIT * 2)) || true - cancel_lru_locks osc - sleep 5 - $LFS setquota -u $TSTUSR -B 0 $DIR - output=`$SHOW_QUOTA_USER | grep $MOUNT | awk '{ print $5 }' | tr -d s` - [ "$output" -le "$((GRACE - 5))" ] || error "grace times were reset or unexpectedly high latency" - rm -f $TESTFILE - resetquota -u $TSTUSR - $LFS setquota -t -u --block-grace $MAX_DQ_TIME --inode-grace $MAX_IQ_TIME $DIR -} -run_test_with_stat 30 "hard limit updates should not reset grace times ================" - test_29() { local BLK_LIMIT=$((100 * 1024 * 1024)) # 100G local timeout local pid - local origin_resends if at_is_enabled; then timeout=$(at_max_get client) @@ -2097,9 +2070,6 @@ test_29() lctl set_param timeout=10 fi - origin_resends=$(lctl get_param -n mdc.${FSNAME}-*.quota_resend_count | head -1) - lctl set_param -n mdc.${FSNAME}-*.quota_resend_count 0 - #define OBD_FAIL_MDS_QUOTACTL_NET 0x12e lustre_fail mds 0x12e @@ -2118,11 +2088,83 @@ test_29() lctl set_param timeout=$timeout fi - lctl set_param -n mdc.${FSNAME}-*.quota_resend_count $origin_resends resetquota -u $TSTUSR } run_test_with_stat 29 "unhandled quotactls must not hang lustre client (19778) ========" +test_30() +{ + local output + local LIMIT=1024 + local TESTFILE="$DIR/$tdir/$tfile" + local GRACE=10 + + mkdir -p $DIR/$tdir + chmod 0777 $DIR/$tdir + + $LFS setquota -t -u --block-grace $GRACE --inode-grace $MAX_IQ_TIME $DIR + $LFS setquota -u $TSTUSR -b $LIMIT -B 0 -i 0 -I 0 $DIR + $RUNAS dd if=/dev/zero of=$TESTFILE bs=1024 count=$((LIMIT * 2)) || true + cancel_lru_locks osc + sleep 5 + $LFS setquota -u $TSTUSR -B 0 $DIR + $SHOW_QUOTA_USER + output=`$SHOW_QUOTA_USER | grep $MOUNT | awk '{ print $5 }' | tr -d s` + [ "$output" -le "$((GRACE - 5))" ] || error "grace times were reset or unexpectedly high latency" + rm -f $TESTFILE + resetquota -u $TSTUSR + $LFS setquota -t -u --block-grace $MAX_DQ_TIME --inode-grace $MAX_IQ_TIME $DIR +} +run_test_with_stat 30 "hard limit updates should not reset grace times ================" + +# test duplicate quota releases b=18630 +test_31() { + mkdir -p $DIR/$tdir + chmod 0777 $DIR/$tdir + + LIMIT=$(( $BUNIT_SZ * $(($OSTCOUNT + 1)) * 10)) # 10 bunits each sever + TESTFILE="$DIR/$tdir/$tfile-0" + TESTFILE2="$DIR/$tdir/$tfile-1" + + wait_delete_completed + + log " User quota (limit: $LIMIT kbytes)" + $LFS setquota -u $TSTUSR -b 0 -B $LIMIT -i 0 -I 0 $DIR + + $LFS setstripe $TESTFILE -i 0 -c 1 + chown $TSTUSR.$TSTUSR $TESTFILE + $LFS setstripe $TESTFILE2 -i 0 -c 1 + chown $TSTUSR.$TSTUSR $TESTFILE2 + + log " step1: write out of block quota ..." + $RUNAS dd if=/dev/zero of=$TESTFILE bs=$BLK_SZ count=5120 + $RUNAS dd if=/dev/zero of=$TESTFILE2 bs=$BLK_SZ count=5120 + + #define OBD_FAIL_QUOTA_DELAY_SD 0xA04 + #define OBD_FAIL_SOME 0x10000000 /* fail N times */ + lustre_fail ost $((0x00000A04 | 0x10000000)) 1 + + log " step2: delete two files so that triggering duplicate quota release ..." + rm -f $TESTFILE $TESTFILE2 + sync; sleep 5; sync # OBD_FAIL_QUOTA_DELAY_SD will delay for 5 seconds + wait_delete_completed + + log " step3: verify if the ost failed" + do_facet ost1 dmesg > $TMP/lustre-log-${TESTNAME}.log + watchdog=`awk '/test 31/ {start = 1;} + /release quota error/ { + if (start) { + print; + } + }' $TMP/lustre-log-${TESTNAME}.log` + [ "$watchdog" ] && error "$watchdog" + rm -f $TMP/lustre-log-${TESTNAME}.log + + lustre_fail ost 0 + resetquota -u $TSTUSR +} +run_test_with_stat 31 "test duplicate quota releases ===" + # turn off quota quota_fini() { @@ -2135,5 +2177,6 @@ log "cleanup: ======================================================" cd $ORIG_PWD check_and_cleanup_lustre echo '=========================== finished ===============================' +export QUOTA_AUTO=$QUOTA_AUTO_OLD [ -f "$QUOTALOG" ] && cat $QUOTALOG && grep -q FAIL $QUOTALOG && exit 1 || true echo "$0: completed"