X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Fost-pools.sh;h=ffa15066c0b0542ae0c3582bc964fb697e03348d;hb=08aa217ce49aba1ded52e0f7adb8a607035123fd;hp=bb0e6a241b7cca90c5039ab655e88395bada69b0;hpb=5d37670e8507563db556879041c7992936aefa56;p=fs%2Flustre-release.git diff --git a/lustre/tests/ost-pools.sh b/lustre/tests/ost-pools.sh index bb0e6a2..ffa1506 100644 --- a/lustre/tests/ost-pools.sh +++ b/lustre/tests/ost-pools.sh @@ -1183,8 +1183,16 @@ test_23a() { add_pool $POOL "$FSNAME-OST[$TGT_FIRST-$TGT_MAX/3]" "$TGT" create_dir $dir $POOL - $LFS quotaoff -ug $MOUNT - $LFS quotacheck -ug $MOUNT + # XXX remove the interoperability code once we drop the old server + # ( < 2.3.50) support. + if [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.3.50) ]; then + $LFS quotaoff -ug $MOUNT + $LFS quotacheck -ug $MOUNT + else + do_facet mgs $LCTL conf_param $FSNAME.quota.ost=ug + sleep 5 + fi + $LFS setquota -u $RUNAS_ID -b $LIMIT -B $LIMIT $dir sleep 3 $LFS quota -v -u $RUNAS_ID $dir @@ -1229,8 +1237,6 @@ test_23b() { local i=0 local TGT - local BUNIT_SZ=1024 # min block quota unit(kB) - local LIMIT=$((BUNIT_SZ * (OSTCOUNT + 1))) local dir=$POOL_ROOT/dir local file="$dir/$tfile-quota" @@ -1241,36 +1247,65 @@ test_23b() { add_pool $POOL "$FSNAME-OST[$TGT_FIRST-$TGT_MAX/3]" "$TGT" create_dir $dir $POOL - AVAIL=$($LFS df -p $POOL $dir | awk '/summary/ { print $4 }') - [ $AVAIL -gt $MAXFREE ] && - skip_env "Filesystem space $AVAIL is larger than $MAXFREE limit" && - return 0 - log "OSTCOUNT=$OSTCOUNT, OSTSIZE=$OSTSIZE" - log "MAXFREE=$MAXFREE, AVAIL=$AVAIL, SLOW=$SLOW" - - $LFS quotaoff -ug $MOUNT - chown $RUNAS_ID.$RUNAS_ID $dir - i=0 - RC=0 - while [ $RC -eq 0 ]; do - i=$((i + 1)) - stat=$(LOCALE=C $RUNAS2 dd if=/dev/zero of=${file}$i bs=1M \ - count=$((LIMIT * 4)) 2>&1) - RC=$? - echo "$i: $stat" - if [ $RC -eq 1 ]; then - echo $stat | grep -q "Disk quota exceeded" - [[ $? -eq 0 ]] && error "dd failed with EDQUOT with quota off" - - echo $stat | grep -q "No space left on device" - [[ $? -ne 0 ]] && - error "dd did not fail with ENOSPC" - fi - done - - df -h - - rm -rf $POOL_ROOT + local maxfree=$((1024 * 1024 * 30)) # 30G + local AVAIL=$(lfs_df -p $POOL $dir | awk '/summary/ { print $4 }') + [ $AVAIL -gt $maxfree ] && + skip_env "Filesystem space $AVAIL is larger than " \ + "$maxfree limit" && return 0 + + echo "OSTCOUNT=$OSTCOUNT, OSTSIZE=$OSTSIZE, AVAIL=$AVAIL" + echo "MAXFREE=$maxfree, SLOW=$SLOW" + + # XXX remove the interoperability code once we drop the old server + # ( < 2.3.50) support. + if [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.3.50) ]; then + $LFS quotaoff -ug $MOUNT + else + do_facet mgs $LCTL conf_param $FSNAME.quota.ost=none + sleep 5 + fi + + chown $RUNAS_ID.$RUNAS_ID $dir + i=0 + local RC=0 + local TOTAL=0 # KB + local stime=$(date +%s) + local stat + local etime + local elapsed + local maxtime=300 # minimum speed: 5GB / 300sec ~= 17MB/s + while [ $RC -eq 0 ]; do + i=$((i + 1)) + stat=$(LOCALE=C $RUNAS2 dd if=/dev/zero of=${file}$i bs=1M \ + count=$((5 * 1024)) 2>&1) + RC=$? + TOTAL=$((TOTAL + 1024 * 1024 * 5)) + echo "[$i iteration] $stat" + echo "total written: $TOTAL" + + etime=$(date +%s) + elapsed=$((etime - stime)) + echo "stime=$stime, etime=$etime, elapsed=$elapsed" + + if [ $RC -eq 1 ]; then + echo $stat | grep -q "Disk quota exceeded" + [[ $? -eq 0 ]] && + error "dd failed with EDQUOT with quota off" + + echo $stat | grep -q "No space left on device" + [[ $? -ne 0 ]] && + error "dd did not fail with ENOSPC" + elif [ $TOTAL -gt $AVAIL ]; then + error "dd didn't fail with ENOSPC ($TOTAL > $AVAIL)" + elif [ $i -eq 1 -a $elapsed -gt $maxtime ]; then + log "The first 5G write used $elapsed (> $maxtime) " \ + "seconds, terminated" + RC=1 + fi + done + + df -h + rm -rf $POOL_ROOT } run_test 23b "OST pools and OOS" @@ -1431,7 +1466,7 @@ run_test 26 "Choose other OSTs in the pool first in the creation remedy" cd $ORIG_PWD -complete $(basename $0) $SECONDS +complete $SECONDS cleanup_pools $FSNAME check_and_cleanup_lustre exit_status