# always clear fail_loc in case of fail_loc isn't cleared
# properly when previous test failed
lustre_fail mds_ost 0
+ stack_trap cleanup_quota_test EXIT
}
cleanup_quota_test() {
echo "Delete files..."
rm -rf $DIR/$tdir
+ [ -d $DIR/${tdir}_dom ] && rm -rf $DIR/${tdir}_dom
echo "Wait for unlink objects finished..."
wait_delete_completed
sync_all_data || true
skip "not enough space ${free_space} KB, " \
"required $((MB * 1024)) KB"
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
set_ost_qtype "none" || error "disable ost quota failed"
test_quota_performance $MB
$LFS setquota -u $TSTUSR -b 0 -B 10G -i 0 -I 0 $DIR ||
error "set quota failed"
test_quota_performance $MB
-
- cleanup_quota_test
}
run_test 0 "Test basic quota performance"
$RUNAS $DD of=$testfile count=1 seek=$limit &&
quota_error $short_qtype $TSTUSR \
"user write success, but expect EDQUOT"
+ return 0
}
check_write_fallocate() {
local testfile="$DIR/$tdir/$tfile-0"
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
# enable ost quota
set_ost_qtype $QTYPE || error "enable ost quota failed"
if ! is_project_quota_supported; then
echo "Project quota is not supported"
- cleanup_quota_test
return 0
fi
mds_supports_qp
setup_quota_test || error "setup quota failed with $?"
- stack_trap cleanup_quota_test EXIT
# enable ost quota
set_ost_qtype $QTYPE || error "enable ost quota failed"
if ! is_project_quota_supported; then
echo "Project quota is not supported"
- cleanup_quota_test
return 0
fi
mds_supports_qp
setup_quota_test || error "setup quota failed with $?"
- stack_trap cleanup_quota_test EXIT
# enable ost quota
set_ost_qtype $QTYPE || error "enable ost quota failed"
sync_all_data || true
used=$(getquota -u $TSTUSR global curspace $qpool1)
- [ $used -ne 0 ] && quota_error u $TSTUSR \
+ [ $used -eq 0 ] || quota_error u $TSTUSR \
"user quota isn't released after deletion"
- resetquota -u $TSTUSR
-
- # cleanup
- cleanup_quota_test
}
run_test 1c "Quota pools: check 3 pools with hardlimit only for global"
mds_supports_qp
setup_quota_test || error "setup quota failed with $?"
- stack_trap cleanup_quota_test EXIT
# enable ost quota
set_ost_qtype $QTYPE || error "enable ost quota failed"
sync_all_data || true
used=$(getquota -u $TSTUSR global curspace $qpool1)
- [ $used -ne 0 ] && quota_error u $TSTUSR \
+ [ $used -eq 0 ] || quota_error u $TSTUSR \
"user quota isn't released after deletion"
- resetquota -u $TSTUSR
-
- # cleanup
- cleanup_quota_test
}
run_test 1d "Quota pools: check block hardlimit on different pools"
mds_supports_qp
setup_quota_test || error "setup quota failed with $?"
- stack_trap cleanup_quota_test EXIT
# enable ost quota
set_ost_qtype $QTYPE || error "enable ost quota failed"
sync_all_data || true
used=$(getquota -u $TSTUSR global curspace $qpool1)
- [ $used -ne 0 ] && quota_error u $TSTUSR \
+ [ $used -eq 0 ] || quota_error u $TSTUSR \
"user quota isn't released after deletion"
- resetquota -u $TSTUSR
-
- # cleanup
- cleanup_quota_test
}
run_test 1e "Quota pools: global pool high block limit vs quota pool with small"
mds_supports_qp
setup_quota_test || error "setup quota failed with $?"
- stack_trap cleanup_quota_test EXIT
# enable ost quota
set_ost_qtype $QTYPE || error "enable ost quota failed"
# became > 10M. QMT returned EINPROGRESS in a loop.
# Check that it doesn't hung anymore.
test_1_check_write $testfile "user" $limit1
-
- # cleanup
- cleanup_quota_test
}
run_test 1f "Quota pools: correct qunit after removing/adding OST"
mds_supports_qp
setup_quota_test || error "setup quota failed with $?"
- stack_trap cleanup_quota_test EXIT
$LCTL set_param $mdmb_param=1
stack_trap "$LCTL set_param $mdmb_param=$max_dirty_mb" EXIT
check_set_fallocate_or_skip
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
# enable ost quota
set_ost_qtype $QTYPE || error "enable ost quota failed"
wait_delete_completed || error "wait_delete_completed failed"
sync_all_data || true
used=$(getquota -u $TSTUSR global curspace)
- [ $used -ne 0 ] && quota_error u $TSTUSR \
+ [ $used -eq 0 ] || quota_error u $TSTUSR \
"user quota isn't released after deletion"
- resetquota -u $TSTUSR
}
run_test 1h "Block hard limit test using fallocate"
skip "not enough free inodes $FREE_INODES required $LIMIT"
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
# enable mdt quota
set_mdt_qtype $QTYPE || error "enable mdt quota failed"
"user quota isn't released after deletion"
resetquota -g $TSTUSR
- ! is_project_quota_supported && cleanup_quota_test &&
+ ! is_project_quota_supported &&
echo "Skip project quota is not supported" && return 0
# test for project
qmt.$FSNAME-QMT0000.dt-0x0.soft_least_qunit)
setup_quota_test
- stack_trap cleanup_quota_test EXIT
$LFS setstripe $testfile -c 1 -i 0
chown $TSTUSR.$TSTUSR $testfile
qmt.$FSNAME-QMT0000.md-0x0.soft_least_qunit)
setup_quota_test
- trap cleanup_quota_test EXIT
is_project_quota_supported && change_project -sp $TSTPRJID $DIR/$tdir
echo "Create files to exceed soft limit"
local ILIMIT=10 # inodes
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
set_mdt_qtype $QTYPE || error "enable mdt quota failed"
set_ost_qtype $QTYPE || error "enable ost quota failed"
# cleanup
unlinkmany $DIR/$tdir/$tfile-0_ $((ILIMIT + 1)) ||
error "unlinkmany $DIR/$tdir/$tfile-0_ failed"
- cleanup_quota_test
}
run_test 5 "Chown & chgrp successfully even out of block/file quota"
do_facet ost1 dmesg -c > /dev/null
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
# make sure the system is clean
local USED=$(getquota -u $TSTUSR global curspace)
fi
sleep 1
done
-
- cleanup_quota_test
}
run_test 6 "Test dropping acquire request on master"
[ "$SLOW" = "no" ] && LIMIT=5
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
# make sure the system is clean
local USED=$(getquota -u $TSTUSR global curspace)
# hardlimit should be cleared on slave during reintegration
$RUNAS $DD of=$TESTFILE count=$((LIMIT + 1)) oflag=sync ||
quota_error u $TSTUSR "write error, but expect success"
-
- cleanup_quota_test
}
run_test 7a "Quota reintegration (global index)"
local TESTFILE=$DIR/$tdir/$tfile
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
# make sure the system is clean
local USED=$(getquota -u $TSTUSR global curspace)
[ "$SLOW" = "no" ] && LIMIT=5
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
# make sure the system is clean
local USED=$(getquota -u $TSTUSR global curspace)
# reintegration, write will exceed quota
$RUNAS $DD of=$TESTFILE count=$((LIMIT + 1)) oflag=sync &&
quota_error u $TSTUSR "write success, but expect EDQUOT"
-
- cleanup_quota_test
+ return 0
}
run_test 7c "Quota reintegration (restart mds during reintegration)"
local limit=20 # MB
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
set_ost_qtype "none" || error "disable ost quota failed"
$LFS setquota -u $TSTUSR -B ${limit}M $DIR ||
$RUNAS2 $DD of=$TESTFILE1 count=$((limit + 1)) oflag=sync &&
quota_error u $TSTUSR2 "$TSTUSR2 write success, expect EDQUOT"
-
- cleanup_quota_test
+ return 0
}
run_test 7d "Quota reintegration (Transfer index in multiple bulks)"
local TESTFILE=$DIR/${tdir}-1/$tfile
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
# make sure the system is clean
local USED=$(getquota -u $TSTUSR global curinodes)
$RUNAS unlinkmany $TESTFILE $((ilimit + 1)) || error "unlink failed"
rmdir $DIR/${tdir}-1 || error "unlink remote dir failed"
-
- cleanup_quota_test
}
run_test 7e "Quota reintegration (inode limits)"
local FILE_LIMIT=1000000
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
set_mdt_qtype $QTYPE || error "enable mdt quota failed"
set_ost_qtype $QTYPE || error "enable ost quota failed"
quota_error a $TSTUSR "dbench failed!"
is_project_quota_supported && change_project -C $DIR/$tdir
- cleanup_quota_test
}
run_test 8 "Run dbench with quota enabled"
check_whether_skip && return 0
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
set_ost_qtype "ug" || error "enable ost quota failed"
local TESTFILE=$DIR/$tdir/$tfile
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
# set limit to root user should fail
$LFS setquota -u root -b 100G -B 500G -i 1K -I 1M $DIR &&
runas -u 0 -g 0 $DD of=$TESTFILE count=3 oflag=sync ||
error "write failure, expect success"
-
- cleanup_quota_test
}
run_test 10 "Test quota for root user"
test_11() {
local TESTFILE=$DIR/$tdir/$tfile
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
set_mdt_qtype "ug" || error "enable mdt quota failed"
$LFS setquota -u $TSTUSR -b 0 -B 0 -i 0 -I 1 $DIR ||
$SHOW_QUOTA_USER
local USED=$(getquota -u $TSTUSR global curinodes)
[ $USED -ge 2 ] || error "Used inodes($USED) is less than 2"
-
- cleanup_quota_test
}
run_test 11 "Chown/chgrp ignores quota"
local TESTFILE1="$DIR/$tdir/$tfile"-1
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
set_ost_qtype "u" || error "enable ost quota failed"
quota_show_check b u $TSTUSR
echo "Write to ost1 after space freed from ost0..."
$RUNAS $DD of=$TESTFILE1 count=$blk_cnt oflag=sync ||
quota_error a $TSTUSR "rebalancing failed"
-
- cleanup_quota_test
}
run_test 12a "Block quota rebalancing"
local TESTFILE1=$DIR/${tdir}-1/$tfile
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
$LFS mkdir -i 1 $DIR/${tdir}-1 || error "create remote dir failed"
chmod 0777 $DIR/${tdir}-1
$RUNAS unlinkmany $TESTFILE1 $((ilimit / 2)) ||
error "unlink mdt1 files failed"
rmdir $DIR/${tdir}-1 || error "unlink remote dir failed"
-
- cleanup_quota_test
}
run_test 12b "Inode quota rebalancing"
local procf="ldlm.namespaces.*MDT0000-lwp-OST0000.lru_size"
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
set_ost_qtype "u" || error "enable ost quota failed"
quota_show_check b u $TSTUSR
local space=$(getquota -u $TSTUSR $OSTUUID curspace)
[ $limit -le $space ] ||
error "spare quota isn't released, limit:$limit, space:$space"
-
- cleanup_quota_test
}
run_test 13 "Cancel per-ID lock in the LRU list"
local TESTFILE=$DIR/$tdir/$tfile
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
# make sure the system is clean
local USED=$(getquota -u $TSTUSR global curspace)
local TESTFILE="$DIR/$tdir/$tfile"
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
set_ost_qtype "u" || error "enable ost quota failed"
log "User quota (limit: $blimit)"
local TESTFILE=$DIR/$tdir/$tfile
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
set_ost_qtype $QTYPE || error "enable ost quota failed"
$RUNAS $DD of=$TESTFILE count=$((blimit + 1)) seek=$((blimit + 1)) &&
quota_error u $TSTUSR "Write success, expect failure"
$SHOW_QUOTA_USER
-
- cleanup_quota_test
}
run_test 19 "Updating admin limits doesn't zero operational limits(b14790)"
local ILIMIT=1000000
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
set_ost_qtype $QTYPE || error "Enable ost quota failed"
sleep 1
done
echo "(dd_pid=$DDPID2, time=$count)successful"
-
- cleanup_quota_test
}
run_test 21 "Setquota while writing & deleting (b16053)"
local LIMIT=$1
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
set_ost_qtype $QTYPE || error "Enable ost quota failed"
local TESTFILE="$DIR/$tdir/$tfile"
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
set_ost_qtype $QTYPE || error "enable ost quota failed"
sync_all_data || true
$SHOW_QUOTA_USER | grep '*' || error "no matching *"
-
- cleanup_quota_test
}
run_test 24 "lfs draws an asterix when limit is reached (b16646)"
local GRACE=10
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
set_ost_qtype "u" || error "enable ost quota failed"
$SHOW_QUOTA_USER
$RUNAS $DD of=$TESTFILE conv=notrunc oflag=append count=4 &&
error "grace times were reset"
- # cleanup
- cleanup_quota_test
$LFS setquota -t -u --block-grace $MAX_DQ_TIME --inode-grace \
$MAX_IQ_TIME $DIR || error "restore grace time failed"
}
local TOTAL_BLKS=$((INODES * BLK_CNT * 1024))
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
# make sure the system is clean
local USED=$(getquota -u $TSTID global curspace)
is_project_quota_supported && project_supported="yes"
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
# make sure the system is clean
local USED=$(getquota -u $TSTID global curspace)
[ $USED -lt $BLK_CNT ] && error \
"Used space for group $TSTPRJID is $USED, expected $BLK_CNT"
fi
-
- cleanup_quota_test
+ return 0
}
run_test 34 "Usage transfer for user & group & project"
local BLK_CNT=2 # MB
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
echo "Write file..."
$RUNAS $DD of=$DIR/$tdir/$tfile count=$BLK_CNT 2>/dev/null ||
error "Used space for project $TSTPRJID isn't " \
"increased orig:$ORIG_PRJ_SPACE, now:$USED"
fi
-
- cleanup_quota_test
}
run_test 35 "Usage is still accessible across reboot"
skip "Old server doesn't have LU-5006 fix."
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
# make sure the system is clean
local USED=$(getquota -u $TSTID global curspace)
USED=$(getquota -u $TSTID global curspace)
[ $USED -ne 0 ] || quota_error u $TSTUSR "Used space is 0"
-
- cleanup_quota_test
}
run_test 37 "Quota accounted properly for file created by 'lfs setstripe'"
[ "$UID" != 0 ] && skip_env "must run as root" && return
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
# make sure the system is clean
local USED=$(getquota -u $TSTID global curspace)
do_facet mds1 $LCTL get_param $procf
error "skipped id entries"
}
-
- cleanup_quota_test
}
run_test 38 "Quota accounting iterator doesn't skip id entries"
mount
setupall
projectid=$(lfs project $TESTFILE | awk '{print $1}')
- [ $projectid -ne 1024 ] &&
+ [ $projectid -eq 1024 ] ||
error "Project id should be 1024 not $projectid"
-
- cleanup_quota_test
}
run_test 39 "Project ID interface works correctly"
ln $dir1/1 $dir2/1_link &&
error "Hard link across different project quota should fail"
- rm -rf $dir1 $dir2
-
- cleanup_quota_test
+ return 0
}
run_test 40a "Hard link across different project ID"
mv $dir1/1 $dir2/2 || error "mv failed $?"
local projid=$(lfs project $dir2/2 | awk '{print $1}')
- if [ "$projid" != "2" ]; then
- error "project id expected 2 not $projid"
- fi
- rm -rf $dir1 $dir2
- cleanup_quota_test
+ [ "$projid" -eq 2 ] || error "project id expected 2 not $projid"
}
run_test 40b "Mv across different project ID"
error "file under remote dir expected 1 not $projid"
#Agent inode should be ignored for project quota
- USED=$(getquota -p 1 global curinodes)
- [ "$USED" != "3" ] &&
- error "file count expected 3 got $USED"
-
- rm -rf $dir
- cleanup_quota_test
- return 0
+ local used=$(getquota -p 1 global curinodes)
+ [ $used -eq 3 ] ||
+ error "file count expected 3 got $used"
}
run_test 40c "Remote child Dir inherit project quota properly"
done
# account should be 1 + (2 + 1) *10 + 1 * 5
- USED=$(getquota -p $TSTPRJID global curinodes)
- [ "$USED" == "36" ] ||
- error "file count expected 36 got $USED"
-
- rm -rf $dir
- cleanup_quota_test
+ local used=$(getquota -p $TSTPRJID global curinodes)
+ [ $used -eq 36 ] ||
+ error "file count expected 36 got $used"
}
run_test 40d "Stripe Directory inherit project quota properly"
is_project_quota_supported ||
skip "Project quota is not supported"
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
local dir="$DIR/$tdir/dir"
local blimit=102400
local ilimit=4096
awk '/$FSNAME/ { printf \\\"%d %d \\\", \\\$2,\\\$3 }'" \
"$expected" ||
error "failed to get correct statfs for project quota"
-
- cleanup_quota_test
}
run_test 41 "df should return projid-specific values"
# 1(projid 0 dir) + 1(projid 2 dir) + 20(projid 2 files)
count=$($LFS find ! --projid 1 $DIR/$tdir | wc -l)
- [ "$count" != 22 ] && error "expected 22 but got $count"
-
- rm -rf $dir1 $dir2
- cleanup_quota_test
+ [ $count -eq 22 ] || error "expected 22 but got $count"
}
run_test 50 "Test if lfs find --projid works"
#try mv to dir
mv $DIR/$tdir/6 $dir/7
used=$(getquota -p 1 global curinodes)
- [ $used != "6" ] && error "expected 6 got $used"
-
- rm -rf $dir
- cleanup_quota_test
+ [ $used -eq 6 ] || error "expected 6 got $used"
}
run_test 51 "Test project accounting with mv/cp"
mrename $DIR/$tdir/file $dir/file >&/dev/null &&
error "rename should fail"
done
- rm -rf $dir
- cleanup_quota_test
+ return 0
}
run_test 52 "Rename across different project ID"
setup_quota_test || error "setup quota failed with $?"
local dir="$DIR/$tdir/dir"
mkdir $dir && change_project -s $dir
- lfs project -d $dir | grep P || error "inherit attribute should be set"
+ [[ $($LFS project -d $dir) =~ " P " ]] ||
+ error "inherit attribute should be set"
change_project -C $dir
- lfs project -d $dir | grep P &&
+ [[ $($LFS project -d $dir) =~ " - " ]] ||
error "inherit attribute should be cleared"
-
- rm -rf $dir
- cleanup_quota_test
}
run_test 53 "Project inherit attribute could be cleared"
! is_project_quota_supported &&
skip "Project quota is not supported"
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
local testfile="$DIR/$tdir/$tfile-0"
#set project ID/inherit attribute
#cleanup
unlinkmany ${testfile} 100 ||
error "unlink many files failed"
-
- cleanup_quota_test
}
run_test 54 "basic lfs project interface test"
error "chgrp should succeed"
$LFS quota -v -g $TSTUSR2 $DIR
-
- cleanup_quota_test
}
run_test 55 "Chgrp should be affected by group quota"
$LFS quota -t -u $DIR
error "expected grace time: 10s;10s, got:$grace_time"
fi
-
- cleanup_quota_test
}
run_test 56 "lfs quota -t should work well"
ln -s $dir/not_exist_file $dir/ccc
local cnt=$(lfs project -r $dir 2>/dev/null | wc -l)
[ $cnt -eq 7 ] || error "expected 7 got $cnt"
-
- cleanup_quota_test
}
run_test 57 "lfs project could tolerate errors"
touch $testfile && lfs project -sp 1 $testfile
enable_project_quota
- cleanup_quota_test
}
run_test 59 "lfs project dosen't crash kernel with project disabled"
[ $MDS1_VERSION -lt $(version_code 2.11.53) ] &&
skip "Needs MDS version 2.11.53 or later."
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
local testfile=$DIR/$tdir/$tfile
local limit=100
# root user can overrun quota
runas -u 0 -g 0 touch $DIR/$tdir/foo ||
error "root user should succeed"
-
- cleanup_quota_test
}
run_test 60 "Test quota for root with setgid"
}
setup_quota_test || error "setup quota failed with $?"
- stack_trap cleanup_quota_test EXIT
quota_init
error "reset default quota failed"
$LFS setquota $qtype $qid $qpool_cmd $qs 0 $qh 0 $DIR ||
error "reset quota failed"
-
cleanup_quota_test
}
chattr -P $testdir || error "root failed to clear inherit"
[[ $($LFS project -d $testdir) =~ "P" ]] &&
error "inherit attribute should be cleared"
- cleanup_quota_test
+ return 0
}
run_test 62 "Project inherit should be only changed by root"
[ $qtype == "p" ] && qid=$TSTPRJID
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
quota_init
$RUNAS $DD of=$DIR/$tdir/file count=$((LIMIT/2048 + 10)) oflag=sync &&
quota_error $qtype $qid "write succeed, expect EDQUOT"
- rm -f $DIR/$tdir/*
+ rm -fr $DIR/$tdir
rm -fr $DIR/$tdir_dom
$LFS setquota -u $TSTUSR -b 0 -B 0 -i 0 -I 0 $DIR ||
error "reset usr quota failed"
-
- cleanup_quota_test
}
test_63() {
used=$(getquota -p $TSTPRJID global curinodes)
[ $used -eq 0 ] || error "expected 0 got $used"
-
- cleanup_quota_test
}
run_test 64 "lfs project on non dir/files should succeed"
local quota_g=$($LFS quota -g $TSTUSR $DIR)
local quota_all=$($RUNAS $LFS quota $DIR)
- [ "$(echo "$quota_all" | head -n3)" != "$quota_u" ] &&
+ [ "$(echo "$quota_all" | head -n3)" == "$quota_u" ] ||
error "usr quota not match"
- [ "$(echo "$quota_all" | tail -n3)" != "$quota_g" ] &&
+ [ "$(echo "$quota_all" | tail -n3)" == "$quota_g" ] ||
error "grp quota not match"
-
- rm -f $TESTFILE
- # cleanup
- cleanup_quota_test
}
run_test 65 "Check lfs quota result"
[ "$MDS1_VERSION" -lt $(version_code 2.12.4) ] &&
skip "Not supported before 2.12.4"
setup_quota_test || error "setup quota failed with $?"
- stack_trap cleanup_quota_test EXIT
local old=$(do_facet mds1 $LCTL get_param -n \
mdt.*.enable_chprojid_gid | head -1)
local testdir=$DIR/$tdir/foo
change_project -p $TSTPRJID $testdir/bar || error \
"root should be able to change its own file's projid"
-
- cleanup_quota_test
}
run_test 66 "nonroot user can not change project state in default"
skip "ZFS grants some block space together with inode"
setup_quota_test || error "setup quota failed with $?"
- trap cleanup_quota_test EXIT
# enable ost quota
set_ost_qtype $QTYPE || error "enable ost quota failed"
wait_delete_completed || error "wait_delete_completed failed"
sync_all_data || true
used=$(getquota -u $TSTUSR global curspace)
- [ $used -ne 0 ] && quota_error u $TSTUSR \
+ [ $used -eq 0 ] || quota_error u $TSTUSR \
"user quota isn't released after deletion"
- resetquota -u $TSTUSR
-
- cleanup_quota_test
}
run_test 67 "quota pools recalculation"
mds_supports_qp
setup_quota_test || error "setup quota failed with $?"
- stack_trap cleanup_quota_test EXIT
# enable ost quota
set_ost_qtype $QTYPE || error "enable ost quota failed"
# Check again that all is fine with global pool
nr=$(get_slave_nr "0x0" "usr")
- [[ $nr != $((OSTCOUNT + MDSCOUNT)) ]] &&
+ [[ $nr == $((OSTCOUNT + MDSCOUNT)) ]] ||
error "Slave_nr $nr for global pool != ($OSTCOUNT + $MDSCOUNT)"
-
- cleanup_quota_test
}
run_test 68 "slave number in quota pool changed after each add/remove OST"
mds_supports_qp
setup_quota_test || error "setup quota failed with $?"
- stack_trap cleanup_quota_test EXIT
# enable ost quota
set_ost_qtype $QTYPE || error "enable ost quota failed"
$RUNAS dd if=/dev/zero of="$dom0/f1" bs=1K count=512 seek=512 \
oflag=sync || quota_error u $TSTUSR "write failed"
-
- cleanup_quota_test
}
run_test 69 "EDQUOT at one of pools shouldn't affect DOM"
skip "Needs a client >= $VERSION_WITH_QP"
setup_quota_test || error "setup quota failed with $?"
- stack_trap cleanup_quota_test EXIT
# MDS returns EFAULT for unsupported quotactl command
[[ $MDS1_VERSION -lt $(version_code $VERSION_WITH_QP) ]] && err=14
$LFS quota -u $TSTUSR --pool $qpool $DIR
rc=$?
[ $rc -eq $err ] || error "quota res $rc != $err"
-
- cleanup_quota_test
}
run_test 70 "check lfs setquota/quota with a pool option"
[[ $OSTCOUNT -lt 2 ]] && skip "need >= 2 OSTs"
mds_supports_qp
setup_quota_test || error "setup quota failed with $?"
- stack_trap cleanup_quota_test EXIT
# enable ost quota
set_ost_qtype $QTYPE || error "enable ost quota failed"
# write to the 1st component - OST0 is empty
$RUNAS $DD of=$testfile count=$limit seek=0 ||
quota_error u $TSTUSR "write failed"
-
- cleanup_quota_test
}
run_test 71a "Check PFL with quota pools"
[[ $OSTCOUNT -lt 2 ]] && skip "need >= 2 OSTs" && return
mds_supports_qp
setup_quota_test || error "setup quota failed with $?"
- stack_trap cleanup_quota_test EXIT
# enable ost quota
set_ost_qtype $QTYPE || error "enable ost quota failed"
# write over limit in qpool2
$RUNAS $DD of=$testfile count=2 seek=$((128 + limit2)) &&
quota_error u $TSTUSR "user write success, but expect EDQUOT"
-
- cleanup_quota_test
+ return 0
}
run_test 71b "Check SEL with quota pools"
mds_supports_qp
setup_quota_test || error "setup quota failed with $?"
- stack_trap cleanup_quota_test EXIT
# enable ost quota
set_ost_qtype $QTYPE || error "enable ost quota failed"
# was added in a pool
lfs quota -v -u quota_usr --pool $qpool $DIR | grep -v "OST0001" |
grep "OST\|MDT" && error "$qpool consists wrong targets"
-
- cleanup_quota_test
+ return 0
}
run_test 72 "lfs quota --pool prints only pool's OSTs"
mds_supports_qp
setup_quota_test || error "setup quota failed with $?"
- stack_trap cleanup_quota_test EXIT
quota_init
set_ost_qtype $QTYPE || error "enable ost quota failed"
mds_supports_qp
setup_quota_test || error "setup quota failed with $?"
- stack_trap cleanup_quota_test EXIT
# enable ost quota
set_ost_qtype $QTYPE || error "enable ost quota failed"
wait_nm_sync active
resetquota -u $TSTUSR
-
- cleanup_quota_test
}
test_dom_75() {
touch $testfile
$LFS project -p 4294967295 $testfile &&
error "set project ID should fail"
-
- cleanup_quota_test
+ return 0
}
run_test 76 "project ID 4294967295 should be not allowed"