mirror of
https://github.com/ceph/ceph
synced 2024-12-24 20:33:27 +00:00
a0af5de972
This is because running fs/misc on a kclient should not include quota (quota not supported on kernel client). Fixes: #10579 Signed-off-by: John Spray <john.spray@redhat.com>
130 lines
3.3 KiB
Bash
Executable File
130 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
set -x
|
|
|
|
function expect_false()
|
|
{
|
|
set -x
|
|
if "$@"; then return 1; else return 0; fi
|
|
}
|
|
|
|
function write_file()
|
|
{
|
|
set +x
|
|
for ((i=1;i<=$2;i++))
|
|
do
|
|
dd if=/dev/zero of=$1 bs=1M count=1 conv=notrunc oflag=append 2>/dev/null >/dev/null
|
|
if [ $? != 0 ]; then
|
|
echo Try to write $(($i * 1048576))
|
|
set -x
|
|
return 1
|
|
fi
|
|
sleep 0.05
|
|
done
|
|
set -x
|
|
return 0
|
|
}
|
|
|
|
mkdir quota-test
|
|
cd quota-test
|
|
|
|
# bytes
|
|
setfattr . -n ceph.quota.max_bytes -v 100000000 # 100m
|
|
expect_false write_file big 1000 # 1g
|
|
expect_false write_file second 10
|
|
setfattr . -n ceph.quota.max_bytes -v 0
|
|
dd if=/dev/zero of=third bs=1M count=10
|
|
dd if=/dev/zero of=big2 bs=1M count=100
|
|
|
|
|
|
rm -rf *
|
|
|
|
# files
|
|
setfattr . -n ceph.quota.max_files -v 5
|
|
mkdir ok
|
|
touch ok/1
|
|
touch ok/2
|
|
touch 3
|
|
expect_false touch shouldbefail # 5 files will include the "."
|
|
expect_false touch ok/shouldbefail # 5 files will include the "."
|
|
setfattr . -n ceph.quota.max_files -v 0
|
|
touch shouldbecreated
|
|
touch shouldbecreated2
|
|
|
|
|
|
rm -rf *
|
|
|
|
# mix
|
|
mkdir bytes bytes/files
|
|
|
|
setfattr bytes -n ceph.quota.max_bytes -v 10000000 #10m
|
|
setfattr bytes/files -n ceph.quota.max_files -v 5
|
|
dd if=/dev/zero of=bytes/files/1 bs=1M count=4
|
|
dd if=/dev/zero of=bytes/files/2 bs=1M count=4
|
|
expect_false write_file bytes/files/3 1000
|
|
expect_false write_file bytes/files/4 1000
|
|
expect_false write_file bytes/files/5 1000
|
|
stat --printf="%n %s\n" bytes/files/1 #4M
|
|
stat --printf="%n %s\n" bytes/files/2 #4M
|
|
stat --printf="%n %s\n" bytes/files/3 #bigger than 2M
|
|
stat --printf="%n %s\n" bytes/files/4 #should be zero
|
|
expect_false stat bytes/files/5 #shouldn't be exist
|
|
|
|
|
|
|
|
|
|
rm -rf *
|
|
|
|
#mv
|
|
mkdir files limit
|
|
truncate files/file -s 10G
|
|
setfattr limit -n ceph.quota.max_bytes -v 1000000 #1m
|
|
expect_false mv files limit/
|
|
|
|
|
|
|
|
rm -rf *
|
|
|
|
#limit by ancestor
|
|
|
|
mkdir -p ancestor/p1/p2/parent/p3
|
|
setfattr ancestor -n ceph.quota.max_bytes -v 1000000
|
|
setfattr ancestor/p1/p2/parent -n ceph.quota.max_bytes -v 1000000000 #1g
|
|
expect_false write_file ancestor/p1/p2/parent/p3/file1 900 #900m
|
|
stat --printf="%n %s\n" ancestor/p1/p2/parent/p3/file1
|
|
|
|
|
|
#get/set attribute
|
|
|
|
setfattr -n ceph.quota.max_bytes -v 0 .
|
|
setfattr -n ceph.quota.max_bytes -v 1 .
|
|
setfattr -n ceph.quota.max_bytes -v 9223372036854775807 .
|
|
expect_false setfattr -n ceph.quota.max_bytes -v 9223372036854775808 .
|
|
expect_false setfattr -n ceph.quota.max_bytes -v -1 .
|
|
expect_false setfattr -n ceph.quota.max_bytes -v -9223372036854775808 .
|
|
expect_false setfattr -n ceph.quota.max_bytes -v -9223372036854775809 .
|
|
|
|
setfattr -n ceph.quota.max_files -v 0 .
|
|
setfattr -n ceph.quota.max_files -v 1 .
|
|
setfattr -n ceph.quota.max_files -v 9223372036854775807 .
|
|
expect_false setfattr -n ceph.quota.max_files -v 9223372036854775808 .
|
|
expect_false setfattr -n ceph.quota.max_files -v -1 .
|
|
expect_false setfattr -n ceph.quota.max_files -v -9223372036854775808 .
|
|
expect_false setfattr -n ceph.quota.max_files -v -9223372036854775809 .
|
|
|
|
setfattr -n ceph.quota -v "max_bytes=0 max_files=0" .
|
|
setfattr -n ceph.quota -v "max_bytes=1 max_files=0" .
|
|
setfattr -n ceph.quota -v "max_bytes=0 max_files=1" .
|
|
setfattr -n ceph.quota -v "max_bytes=1 max_files=1" .
|
|
expect_false setfattr -n ceph.quota -v "max_bytes=-1 max_files=0" .
|
|
expect_false setfattr -n ceph.quota -v "max_bytes=0 max_files=-1" .
|
|
expect_false setfattr -n ceph.quota -v "max_bytes=-1 max_files=-1" .
|
|
|
|
#addme
|
|
|
|
cd ..
|
|
rm -rf quota-test
|
|
|
|
echo OK
|