Module Name: src
Committed By: bouyer
Date: Fri Feb 11 16:54:03 UTC 2011
Modified Files:
src/tests/fs/ffs [bouyer-quota2]: Makefile t_getquota.sh
Added Files:
src/tests/fs/ffs [bouyer-quota2]: t_miscquota.sh
Log Message:
Add a test which cause the kernel to walk a quota list where all entries
are not in the header disk block, and at last 2 of them are in the same
non-header disk block.
To generate a diff of this commit:
cvs rdiff -u -r1.14.2.6 -r1.14.2.7 src/tests/fs/ffs/Makefile
cvs rdiff -u -r1.1.2.7 -r1.1.2.8 src/tests/fs/ffs/t_getquota.sh
cvs rdiff -u -r0 -r1.1.2.1 src/tests/fs/ffs/t_miscquota.sh
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/tests/fs/ffs/Makefile
diff -u src/tests/fs/ffs/Makefile:1.14.2.6 src/tests/fs/ffs/Makefile:1.14.2.7
--- src/tests/fs/ffs/Makefile:1.14.2.6 Wed Feb 9 20:53:10 2011
+++ src/tests/fs/ffs/Makefile Fri Feb 11 16:54:03 2011
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.14.2.6 2011/02/09 20:53:10 bouyer Exp $
+# $NetBSD: Makefile,v 1.14.2.7 2011/02/11 16:54:03 bouyer Exp $
#
.include <bsd.own.mk>
@@ -17,7 +17,7 @@
MAN.h_quota2_tests= # empty
BINDIR.h_quota2_tests= ${TESTSDIR}
-.for name in t_getquota t_setquota t_quotalimit t_clearquota
+.for name in t_getquota t_setquota t_quotalimit t_clearquota t_miscquota
TESTS_SH+= ${name}
TESTS_SH_SRC_${name}= quotas_common.sh ${name}.sh
.endfor
Index: src/tests/fs/ffs/t_getquota.sh
diff -u src/tests/fs/ffs/t_getquota.sh:1.1.2.7 src/tests/fs/ffs/t_getquota.sh:1.1.2.8
--- src/tests/fs/ffs/t_getquota.sh:1.1.2.7 Mon Feb 7 16:22:50 2011
+++ src/tests/fs/ffs/t_getquota.sh Fri Feb 11 16:54:03 2011
@@ -1,4 +1,4 @@
-# $NetBSD: t_getquota.sh,v 1.1.2.7 2011/02/07 16:22:50 bouyer Exp $
+# $NetBSD: t_getquota.sh,v 1.1.2.8 2011/02/11 16:54:03 bouyer Exp $
#
# Copyright (c) 2011 Manuel Bouyer
# All rights reserved.
@@ -84,3 +84,28 @@
done
rump_shutdown
}
+
+quota_walk_list()
+{
+ create_with_quotas_server $*
+ local q=$4
+ local expect
+
+ case ${q} in
+ user)
+ expect=u
+ fail=g
+ ;;
+ group)
+ expect=g
+ fail=u
+ ;;
+ both)
+ expect="u g"
+ fail=""
+ ;;
+ *)
+ atf_fail "wrong quota type"
+ ;;
+ esac
+}
Added files:
Index: src/tests/fs/ffs/t_miscquota.sh
diff -u /dev/null src/tests/fs/ffs/t_miscquota.sh:1.1.2.1
--- /dev/null Fri Feb 11 16:54:03 2011
+++ src/tests/fs/ffs/t_miscquota.sh Fri Feb 11 16:54:03 2011
@@ -0,0 +1,63 @@
+# $NetBSD: t_miscquota.sh,v 1.1.2.1 2011/02/11 16:54:03 bouyer Exp $
+#
+# Copyright (c) 2011 Manuel Bouyer
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+
+test_case walk_list_user quota_walk_list \
+ "walk user quota list over several disk blocks" -b le 1 user
+
+quota_walk_list()
+{
+ create_with_quotas_server $*
+ local q=$4
+ local expect
+
+ case ${q} in
+ user)
+ expect=u
+ fail=g
+ ;;
+ group)
+ expect=g
+ fail=u
+ ;;
+ *)
+ atf_fail "wrong quota type"
+ ;;
+ esac
+
+ # create 100 users, all in the same hash list
+ local i=1;
+ while [ $i -lt 101 ]; do
+ atf_check -s exit:0 \
+ $(atf_get_srcdir)/rump_edquota -${expect} \
+ -s10k/20 -h40M/50k -t 2W/3D $((i * 4096))
+ i=$((i + 1))
+ done
+ # do a repquota
+ atf_check -s exit:0 -o 'match:<integer>0x64000' \
+ $(atf_get_srcdir)/rump_repquota -x -${expect} /mnt
+ rump_shutdown
+}