[PATCH] xfstests: Improve test 219 to work with all filesystems

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Different filesystems account different amount of metadata in quota. Thus it is
impractical to check for a particular amount of space occupied by a file
because there is no right value. Change the test to verify whether the amount
of space before quotacheck and after quotacheck is the same as other quota
tests do.

Signed-off-by: Jan Kara <jack@xxxxxxx>
---
 219          |    4 +---
 219.out      |   18 ++----------------
 common.quota |   52 ++++++++++++++++++++++++++++++++++++++--------------
 3 files changed, 41 insertions(+), 33 deletions(-)

diff --git a/219 b/219
index 836d703..7c22dac 100755
--- a/219
+++ b/219
@@ -76,9 +76,7 @@ test_accounting()
 	for file in $SCRATCH_MNT/{buffer,direct,mmap}; do
 		$here/src/lstat64 $file | head -3 | _filter_scratch
 	done
-
-	repquota -$type -n $SCRATCH_MNT  | grep -v "^#0" | _filter_scratch |
-	awk '/^#/ { if (seen[$1]) next; seen[$1]++; } { print; }'
+	_check_quota_usage
 }
 
 # real QA test starts here
diff --git a/219.out b/219.out
index fadfafc..7a86b94 100644
--- a/219.out
+++ b/219.out
@@ -22,14 +22,7 @@ QA output created by 219
   File: "SCRATCH_MNT/mmap"
   Size: 49152        Filetype: Regular File
   Mode: (0644/-rw-r--r--)         Uid: (1)  Gid: (2)
-*** Report for user quotas on device SCRATCH_DEV
-Block grace time: 7days; Inode grace time: 7days
-                        Block limits                File limits
-User            used    soft    hard  grace    used  soft  hard  grace
-----------------------------------------------------------------------
-#1        --     144       0       0              3     0     0       
-
-
+Comparing user usage
 
 ### test group accounting
 
@@ -53,11 +46,4 @@ User            used    soft    hard  grace    used  soft  hard  grace
   File: "SCRATCH_MNT/mmap"
   Size: 49152        Filetype: Regular File
   Mode: (0644/-rw-r--r--)         Uid: (1)  Gid: (2)
-*** Report for group quotas on device SCRATCH_DEV
-Block grace time: 7days; Inode grace time: 7days
-                        Block limits                File limits
-Group           used    soft    hard  grace    used  soft  hard  grace
-----------------------------------------------------------------------
-#2        --     144       0       0              3     0     0       
-
-
+Comparing group usage
diff --git a/common.quota b/common.quota
index 3c87ce1..9cb9304 100644
--- a/common.quota
+++ b/common.quota
@@ -236,36 +236,60 @@ _check_quota_usage()
 {
 	# Sync to get delalloc to disk
 	sync
+	USRQUOTA=0
+	GRPQUOTA=0
+	QMNTOPT=""
+	if echo $MOUNT_OPTIONS | grep -E "uquota|usrquota|uqnoenforce" &>/dev/null; then
+		USRQUOTA=1
+		QMNTOPT=",usrquota"
+	fi
+	if echo $MOUNT_OPTIONS | grep -E "gquota|grpquota|gqnoenforce" &>/dev/null; then
+		GRPQUOTA=1
+		QMNTOPT=$QMNTOPT",grpquota"
+	fi
 	VFS_QUOTA=0
 	if [ $FSTYP = "ext2" -o $FSTYP = "ext3" -o $FSTYP = "ext4" -o $FSTYP = "reiserfs" ]; then
 		VFS_QUOTA=1
 		quotaon -f -u -g $SCRATCH_MNT 2>/dev/null
 	fi
-	repquota -u -n $SCRATCH_MNT  | grep -v "^#0" | _filter_scratch |
-		sort >$tmp.user.orig
-	repquota -g -n $SCRATCH_MNT  | grep -v "^#0" | _filter_scratch |
-		sort >$tmp.group.orig
+	if [ $USRQUOTA == 1 ]; then
+		repquota -u -n $SCRATCH_MNT  | grep -v "^#0" |
+			_filter_scratch | sort >$tmp.user.orig
+	fi
+	if [ $GRPQUOTA == 1 ]; then
+		repquota -g -n $SCRATCH_MNT  | grep -v "^#0" |
+			_filter_scratch | sort >$tmp.group.orig
+	fi
 	if [ $VFS_QUOTA -eq 1 ]; then
 		quotacheck -u -g $SCRATCH_MNT 2>/dev/null
 	else
 		# use XFS method to force quotacheck
 		mount -o remount,noquota $SCRATCH_DEV
-		mount -o remount,usrquota,grpquota $SCRATCH_DEV
+		mount -o remount$QMNTOPT $SCRATCH_DEV
+	fi
+	if [ $USRQUOTA == 1 ]; then
+		repquota -u -n $SCRATCH_MNT  | grep -v "^#0" |
+			_filter_scratch | sort >$tmp.user.checked
+	fi
+	if [ $GRPQUOTA == 1 ]; then
+		repquota -g -n $SCRATCH_MNT  | grep -v "^#0" |
+			_filter_scratch | sort >$tmp.group.checked
 	fi
-	repquota -u -n $SCRATCH_MNT  | grep -v "^#0" | _filter_scratch |
-		sort >$tmp.user.checked
-	repquota -g -n $SCRATCH_MNT  | grep -v "^#0" | _filter_scratch |
-		sort >$tmp.group.checked
 	if [ $VFS_QUOTA -eq 1 ]; then
 		quotaon -u -g $SCRATCH_MNT 2>/dev/null
 	fi
-	{
+	if [ $USRQUOTA == 1 ]; then
 		echo "Comparing user usage"
-		diff $tmp.user.orig $tmp.user.checked
-	} && {
+		if ! diff $tmp.user.orig $tmp.user.checked; then
+			return 1
+		fi
+	fi
+	if [ $GRPQUOTA == 1 ]; then
 		echo "Comparing group usage"
-		diff $tmp.group.orig $tmp.group.checked
-	}
+		if ! diff $tmp.group.orig $tmp.group.checked; then
+			return 1
+		fi
+	fi
 }
 
 # make sure this script returns success
-- 
1.6.0.2

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs


[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux