Module Name:    src
Committed By:   bouyer
Date:           Thu Feb  3 17:36:31 UTC 2011

Modified Files:
        src/sys/ufs/ufs [bouyer-quota2]: quota1_subr.c quota2_subr.c
        src/tests/fs/ffs [bouyer-quota2]: h_quota2_tests.c t_quotalimit.sh

Log Message:
Change semantic of limits to allow up to the limit inclued (instead of
up to one less than the limit: I feel that if my limit is 1000 inodes
I should be able to create 1000 files, not 999).
Keep the previous semantic for quota1 dquot, the conversion functions
will add or remove 1 when converting limits from/to the new format.

Adjust test for this change.


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.2 -r1.1.2.3 src/sys/ufs/ufs/quota1_subr.c
cvs rdiff -u -r1.1.2.5 -r1.1.2.6 src/sys/ufs/ufs/quota2_subr.c
cvs rdiff -u -r1.1.2.1 -r1.1.2.2 src/tests/fs/ffs/h_quota2_tests.c
cvs rdiff -u -r1.1.2.2 -r1.1.2.3 src/tests/fs/ffs/t_quotalimit.sh

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/ufs/ufs/quota1_subr.c
diff -u src/sys/ufs/ufs/quota1_subr.c:1.1.2.2 src/sys/ufs/ufs/quota1_subr.c:1.1.2.3
--- src/sys/ufs/ufs/quota1_subr.c:1.1.2.2	Mon Jan 31 15:24:10 2011
+++ src/sys/ufs/ufs/quota1_subr.c	Thu Feb  3 17:36:30 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: quota1_subr.c,v 1.1.2.2 2011/01/31 15:24:10 bouyer Exp $ */
+/* $NetBSD: quota1_subr.c,v 1.1.2.3 2011/02/03 17:36:30 bouyer Exp $ */
 /*-
   * Copyright (c) 2010 Manuel Bouyer
   * All rights reserved.
@@ -28,7 +28,7 @@
   */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: quota1_subr.c,v 1.1.2.2 2011/01/31 15:24:10 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: quota1_subr.c,v 1.1.2.3 2011/02/03 17:36:30 bouyer Exp $");
 
 #include <sys/types.h>
 #include <machine/limits.h>
@@ -41,10 +41,8 @@
 {
 	if (lim == 0)
 		return UQUAD_MAX;
-	else if (lim == 1)
-		return 0;
 	else
-		return lim;
+		return (lim - 1);
 }
 
 static uint32_t
@@ -52,10 +50,8 @@
 {
 	if (lim == UQUAD_MAX)
 		return 0;
-	else if (lim == 0)
-		return 1;
 	else
-		return lim;
+		return (lim + 1);
 }
 
 void

Index: src/sys/ufs/ufs/quota2_subr.c
diff -u src/sys/ufs/ufs/quota2_subr.c:1.1.2.5 src/sys/ufs/ufs/quota2_subr.c:1.1.2.6
--- src/sys/ufs/ufs/quota2_subr.c:1.1.2.5	Thu Feb  3 15:56:16 2011
+++ src/sys/ufs/ufs/quota2_subr.c	Thu Feb  3 17:36:30 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: quota2_subr.c,v 1.1.2.5 2011/02/03 15:56:16 bouyer Exp $ */
+/* $NetBSD: quota2_subr.c,v 1.1.2.6 2011/02/03 17:36:30 bouyer Exp $ */
 /*-
   * Copyright (c) 2010 Manuel Bouyer
   * All rights reserved.
@@ -28,7 +28,7 @@
   */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: quota2_subr.c,v 1.1.2.5 2011/02/03 15:56:16 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: quota2_subr.c,v 1.1.2.6 2011/02/03 17:36:30 bouyer Exp $");
 
 #include <sys/param.h>
 #include <sys/time.h>
@@ -112,12 +112,12 @@
 int
 quota2_check_limit(struct quota2_val *q2v, uint64_t change, time_t now)
 {
-	if (q2v->q2v_cur + change >= q2v->q2v_hardlimit) {
-		if (q2v->q2v_cur < q2v->q2v_softlimit) 
+	if (q2v->q2v_cur + change > q2v->q2v_hardlimit) {
+		if (q2v->q2v_cur <= q2v->q2v_softlimit) 
 			return (QL_F_CROSS | QL_S_DENY_HARD);
 		return QL_S_DENY_HARD;
-	} else if (q2v->q2v_cur + change >= q2v->q2v_softlimit) {
-		if (q2v->q2v_cur < q2v->q2v_softlimit)
+	} else if (q2v->q2v_cur + change > q2v->q2v_softlimit) {
+		if (q2v->q2v_cur <= q2v->q2v_softlimit)
 			return (QL_F_CROSS | QL_S_ALLOW_SOFT);
 		if (now > q2v->q2v_time) {
 			return QL_S_DENY_GRACE;

Index: src/tests/fs/ffs/h_quota2_tests.c
diff -u src/tests/fs/ffs/h_quota2_tests.c:1.1.2.1 src/tests/fs/ffs/h_quota2_tests.c:1.1.2.2
--- src/tests/fs/ffs/h_quota2_tests.c:1.1.2.1	Wed Feb  2 19:17:08 2011
+++ src/tests/fs/ffs/h_quota2_tests.c	Thu Feb  3 17:36:31 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: h_quota2_tests.c,v 1.1.2.1 2011/02/02 19:17:08 bouyer Exp $	*/
+/*	$NetBSD: h_quota2_tests.c,v 1.1.2.2 2011/02/03 17:36:31 bouyer Exp $	*/
 
 /*
  * rump server for advanced quota tests
@@ -87,8 +87,8 @@
 		 */
 		int i;
 
-		/* write 1.5k: with the directory this makes 2K */
-		for (i = 0; i < 3; i++) {
+		/* write 2k: with the directory this makes 2.5K */
+		for (i = 0; i < 4; i++) {
 			error = rump_sys_write(fd, buf, sizeof(buf));
 			if (error != sizeof(buf))
 				err(1, "write failed early");
@@ -162,10 +162,10 @@
 	}
 
 	/*
-	 * create files up to the soft limit: one less as we already own the
+	 * create files one past the soft limit: one less as we already own the
 	 * root directory
 	 */
-	for (i = 0; i < 3; i++) {
+	for (i = 0; i < 4; i++) {
 		sprintf(buf, "file%d", i);
 		fd = rump_sys_open(buf, O_EXCL| O_CREAT | O_RDWR, 0644);
 		if (fd < 0)

Index: src/tests/fs/ffs/t_quotalimit.sh
diff -u src/tests/fs/ffs/t_quotalimit.sh:1.1.2.2 src/tests/fs/ffs/t_quotalimit.sh:1.1.2.3
--- src/tests/fs/ffs/t_quotalimit.sh:1.1.2.2	Wed Feb  2 21:01:08 2011
+++ src/tests/fs/ffs/t_quotalimit.sh	Thu Feb  3 17:36:31 2011
@@ -1,4 +1,4 @@
-# $NetBSD: t_quotalimit.sh,v 1.1.2.2 2011/02/02 21:01:08 bouyer Exp $ 
+# $NetBSD: t_quotalimit.sh,v 1.1.2.3 2011/02/03 17:36:31 bouyer Exp $ 
 #
 #  Copyright (c) 2011 Manuel Bouyer
 #  All rights reserved.
@@ -82,10 +82,10 @@
 	    $(atf_get_srcdir)/h_quota2_tests -b 0 ${IMG} ${RUMP_SERVER}
 	for q in ${expect} ; do
 		atf_check -s exit:0 \
-		    -o match:'/mnt   2560 B\*  2048 B   3072 B     2:0      2       4       6         ' \
+		    -o match:'/mnt   3072 B\*  2048 B   3072 B     2:0      2       4       6         ' \
 		    $(atf_get_srcdir)/rump_quota -$q -h ${id}
 		atf_check -s exit:0 \
-		    -o match:'daemon    \+-        2        2        3    2:0         2       4       6' \
+		    -o match:'daemon    \+-        3        2        3    2:0         2       4       6' \
 		    $(atf_get_srcdir)/rump_repquota -$q /mnt
 	done
 	rump_shutdown
@@ -129,7 +129,7 @@
 	    $(atf_get_srcdir)/h_quota2_tests -b 1 ${IMG} ${RUMP_SERVER}
 	for q in ${expect} ; do
 		atf_check -s exit:0 \
-		    -o match:'/mnt   2048 B\*  2048 B   3072 B    none      2       4       6         ' \
+		    -o match:'/mnt   2560 B\*  2048 B   3072 B    none      2       4       6         ' \
 		    $(atf_get_srcdir)/rump_quota -$q -h ${id}
 		atf_check -s exit:0 \
 		    -o match:'daemon    \+-        2        2        3   none         2       4       6' \
@@ -176,10 +176,10 @@
 	    $(atf_get_srcdir)/h_quota2_tests -b 2 ${IMG} ${RUMP_SERVER}
 	for q in ${expect} ; do
 		atf_check -s exit:0 \
-		    -o match:'/mnt   2560 B   2048 K   3072 K              5 \*     4       6      2:0' \
+		    -o match:'/mnt   3072 B   2048 K   3072 K              6 \*     4       6      2:0' \
 		    $(atf_get_srcdir)/rump_quota -$q -h ${id}
 		atf_check -s exit:0 \
-		    -o match:'daemon    -\+        2     2048     3072                5       4       6    2:0' \
+		    -o match:'daemon    -\+        3     2048     3072                6       4       6    2:0' \
 		    $(atf_get_srcdir)/rump_repquota -$q /mnt
 	done
 	rump_shutdown
@@ -223,10 +223,10 @@
 	    $(atf_get_srcdir)/h_quota2_tests -b 3 ${IMG} ${RUMP_SERVER}
 	for q in ${expect} ; do
 		atf_check -s exit:0 \
-		    -o match:'/mnt   2048 B   2048 K   3072 K              4 \*     4       6     none' \
+		    -o match:'/mnt   2560 B   2048 K   3072 K              5 \*     4       6     none' \
 		    $(atf_get_srcdir)/rump_quota -$q -h ${id}
 		atf_check -s exit:0 \
-		    -o match:'daemon    -\+        2     2048     3072                4       4       6   none' \
+		    -o match:'daemon    -\+        2     2048     3072                5       4       6   none' \
 		    $(atf_get_srcdir)/rump_repquota -$q /mnt
 	done
 	rump_shutdown
@@ -275,10 +275,10 @@
 	    $(atf_get_srcdir)/h_quota2_tests -b 0 ${IMG} ${RUMP_SERVER}
 	for q in ${expect} ; do
 		atf_check -s exit:0 \
-		    -o match:'/mnt   2560 B\*  2048 B   3072 B     2:0      2       4       6         ' \
+		    -o match:'/mnt   3072 B\*  2048 B   3072 B     2:0      2       4       6         ' \
 		    $(atf_get_srcdir)/rump_quota -$q -h ${id}
 		atf_check -s exit:0 \
-		    -o match:'daemon    \+-        2        2        3    2:0         2       4       6' \
+		    -o match:'daemon    \+-        3        2        3    2:0         2       4       6' \
 		    $(atf_get_srcdir)/rump_repquota -$q /mnt
 	done
 	rump_shutdown
@@ -327,10 +327,10 @@
 	    $(atf_get_srcdir)/h_quota2_tests -b 2 ${IMG} ${RUMP_SERVER}
 	for q in ${expect} ; do
 		atf_check -s exit:0 \
-		    -o match:'/mnt   2560 B   2048 K   3072 K              5 \*     4       6      2:0' \
+		    -o match:'/mnt   3072 B   2048 K   3072 K              6 \*     4       6      2:0' \
 		    $(atf_get_srcdir)/rump_quota -$q -h ${id}
 		atf_check -s exit:0 \
-		    -o match:'daemon    -\+        2     2048     3072                5       4       6    2:0' \
+		    -o match:'daemon    -\+        3     2048     3072                6       4       6    2:0' \
 		    $(atf_get_srcdir)/rump_repquota -$q /mnt
 	done
 	rump_shutdown

Reply via email to