#!/usr/bin/env bash . $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcachefs-test-libs.sh require-kernel-config QUOTA require-kernel-config BCACHEFS_QUOTA config-scratch-devs 4G config-scratch-devs 4G require-git http://evilpiepirate.org/git/linuxquota.git require-make linuxquota test_usrquota_twodevices() { run_quiet "" bcachefs format -f \ --errors=panic \ ${ktest_scratch_dev[@]} mount -t bcachefs -o usrquota,grpquota,prjquota ${ktest_scratch_dev[0]}:${ktest_scratch_dev[1]} /mnt repquota -s /mnt echo foo:10 >> /etc/projid echo 10:/mnt >> /etc/projects setquota -u root 256M 512M 64 128 /mnt #setquota -t 60 60 /mnt echo "testing direct writes" ! dd if=/dev/zero of=/mnt/foo bs=1M oflag=direct repquota -s /mnt rm /mnt/foo echo "testing buffered writes" ! dd if=/dev/zero of=/mnt/foo bs=1M repquota -s /mnt rm /mnt/foo umount /mnt } test_usrquota() { if false; then mkfs.xfs ${ktest_scratch_dev[0]} else bcachefs format -f \ --errors=panic \ ${ktest_scratch_dev[0]} >/dev/null fi mount -t bcachefs -o usrquota,grpquota,prjquota ${ktest_scratch_dev[0]} /mnt repquota -s /mnt echo foo:10 >> /etc/projid echo 10:/mnt >> /etc/projects setquota -u root 256M 512M 64 128 /mnt #setquota -t 60 60 /mnt echo "testing direct writes" ! dd if=/dev/zero of=/mnt/foo bs=1M oflag=direct repquota -s /mnt rm /mnt/foo echo "testing buffered writes" ! dd if=/dev/zero of=/mnt/foo bs=1M repquota -s /mnt rm /mnt/foo umount /mnt } test_grpquota() { if false; then mkfs.xfs ${ktest_scratch_dev[0]} else run_quiet "" bcachefs format -f \ --errors=panic \ ${ktest_scratch_dev[0]} ${ktest_scratch_dev[1]} >/dev/null fi mount -t bcachefs -o usrquota,grpquota,prjquota ${ktest_scratch_dev[0]}:${ktest_scratch_dev[1]} /mnt setquota -g root 256M 512M 64 128 /mnt #setquota -t 60 60 /mnt repquota -g -s /mnt echo "testing direct writes" ! dd if=/dev/zero of=/mnt/foo bs=1M oflag=direct repquota -g -s /mnt umount /mnt } test_prjquota() { run_quiet "" bcachefs format -f \ --errors=panic \ ${ktest_scratch_dev[0]} >/dev/null mount -t bcachefs -o usrquota,grpquota,prjquota ${ktest_scratch_dev[0]} /mnt repquota -vP /mnt mkdir /mnt/q1 mkdir /mnt/q2 touch /mnt/q1/foo touch /mnt/q1/foo setproject -c -P q1 /mnt/q1 setproject -c -P q2_averylongprojectquotanamefooooooooooooooooooooooooooooooooooooooooobar /mnt/q2 getfattr -R -d -m - /mnt/ #setquota -t 60 60 /mnt setquota -P q1 256M 512M 64 128 /mnt echo "testing direct writes" ! dd if=/dev/zero of=/mnt/q1/foo bs=1M oflag=direct repquota -P -s /mnt chattr -p 0 /mnt/q1/foo #mv /mnt/q1/foo /mnt/q2 repquota -P -s /mnt umount /mnt } test_prjquota_multidevices() { run_quiet "" bcachefs format -f \ --errors=panic \ ${ktest_scratch_dev[@]} mount -t bcachefs -o usrquota,grpquota,prjquota ${ktest_scratch_dev[0]}:${ktest_scratch_dev[1]} /mnt repquota -vP /mnt mkdir /mnt/q1 mkdir /mnt/q2 touch /mnt/q1/foo touch /mnt/q1/foo setproject -c -P q1 /mnt/q1 setproject -c -P q2 /mnt/q2 getfattr -R -d -m - /mnt/ #setquota -t 60 60 /mnt setquota -P q1 256M 512M 64 128 /mnt echo "testing direct writes" ! dd if=/dev/zero of=/mnt/q1/foo bs=1M oflag=direct repquota -P -s /mnt mv /mnt/q1/foo /mnt/q2 repquota -P -s /mnt umount /mnt } main "$@"