[ -n "$QUOTA_PROG" ] || _notrun "Quota user tools not installed"
case $FSTYP in
- ext2|ext3|ext4|ext4dev|reiserfs)
+ ext2|ext3|ext4|ext4dev|f2fs|reiserfs)
if [ ! -d /proc/sys/fs/quota ]; then
_notrun "Installed kernel does not support quotas"
fi
#
_require_xfs_quota()
{
- src/feature -q $TEST_DEV
+ $here/src/feature -q $TEST_DEV
[ $? -ne 0 ] && _notrun "Installed kernel does not support XFS quota"
if [ "$USE_EXTERNAL" = yes -a ! -z "$TEST_RTDEV" ]; then
_notrun "Quotas not supported on realtime test device"
}
#
-# checks that the project quota support in the kernel is enabled.
+# Checks that the project quota support in the kernel is enabled.
+# The device must be mounted for detection to work properly.
#
_require_prjquota()
{
if [ "$FSTYP" == "f2fs" ]; then
dump.f2fs $_dev 2>&1 | grep -qw project_quota
[ $? -ne 0 ] && _notrun "Project quota not enabled in this device $_dev"
+ dump.f2fs $_dev 2>&1 | grep -qw quota_ino
+ [ $? -ne 0 ] && _notrun "quota sysfile not enabled in this device $_dev"
cat /sys/fs/f2fs/features/project_quota | grep -qw supported
[ $? -ne 0 ] && _notrun "Installed kernel does not support project quotas"
return
fi
- src/feature -P $_dev
+ $here/src/feature -P $_dev
[ $? -ne 0 ] && _notrun "Installed kernel does not support project quotas"
if [ "$USE_EXTERNAL" = yes ]; then
if [ -n "$TEST_RTDEV" -o -n "$SCRATCH_RTDEV" ]; then
# prior to mount. This is a relatively new feature ...
_scratch_enable_pquota()
{
- [[ "$FSTYP" != ext[234] ]] && return
-
- tune2fs -O quota,project $SCRATCH_DEV >>$seqres.full 2>&1
- _try_scratch_mount >/dev/null 2>&1 \
- || _notrun "kernel doesn't support project feature on $FSTYP"
- _scratch_unmount
+ case $FSTYP in
+ ext2|ext3|ext4)
+ tune2fs -O quota,project $SCRATCH_DEV >>$seqres.full 2>&1
+ _try_scratch_mount >/dev/null 2>&1 \
+ || _notrun "kernel doesn't support project feature on $FSTYP"
+ _scratch_unmount
+ ;;
+ f2fs)
+ _scratch_mkfs "-O extra_attr -O quota -O project_quota" >> $seqres.full 2>&1
+ ;;
+ esac
}
#
export MOUNT_OPTIONS=`echo $MOUNT_OPTIONS \
| sed -e 's/uquota/QUOTA/g' \
-e 's/usrquota/QUOTA/g' \
- -e 's/usrjquota=[^, ]/QUOTA/g' \
+ -e 's/usrjquota=[^, ]*/QUOTA/g' \
-e 's/gquota/QUOTA/g' \
-e 's/grpquota/QUOTA/g' \
- -e 's/grpjquota=[^, ]/QUOTA/g' \
+ -e 's/grpjquota=[^, ]*/QUOTA/g' \
-e 's/\bpquota/QUOTA/g' \
-e 's/prjquota/QUOTA/g' \
-e 's/quota/QUOTA/g' \
VFS_QUOTA=0
case $FSTYP in
- ext2|ext3|ext4|ext4dev|reiserfs|gfs2)
+ ext2|ext3|ext4|ext4dev|f2fs|reiserfs|gfs2)
VFS_QUOTA=1
quotaon -f -u -g $SCRATCH_MNT 2>/dev/null
;;