Allow bufpages/nbuf larger than 1 (still max out at all buffers
authorniklas <niklas@openbsd.org>
Sat, 1 Feb 1997 00:31:49 +0000 (00:31 +0000)
committerniklas <niklas@openbsd.org>
Sat, 1 Feb 1997 00:31:49 +0000 (00:31 +0000)
be MAXBSIZE).  Remove faulty limit test of buffer pages allocation.  The
check is now done at the bufpages+nbuf calculations.

sys/arch/i386/i386/machdep.c

index ee7a653..922638f 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.36 1997/01/27 22:47:59 deraadt Exp $    */
+/*     $OpenBSD: machdep.c,v 1.37 1997/02/01 00:31:49 niklas Exp $     */
 /*     $NetBSD: machdep.c,v 1.202 1996/05/18 15:54:59 christos Exp $   */
 
 /*-
@@ -243,9 +243,9 @@ cpu_startup()
 
        base = bufpages / nbuf;
        residual = bufpages % nbuf;
-       if (base >= MAXBSIZE) {
+       if (base >= MAXBSIZE / CLBYTES) {
                /* don't want to alloc more physical mem than needed */
-               base = MAXBSIZE;
+               base = MAXBSIZE / CLBYTES;
                residual = 0;
        }
 
@@ -393,17 +393,22 @@ allocsys(v)
                else
                        bufpages = (btoc(2 * 1024 * 1024) + physmem) /
                            ((100/BUFCACHEPERCENT) * CLSIZE);
-
-       /* Restrict to at most 70% filled kvm */
-       if (bufpages * MAXBSIZE >
-           (VM_MAX_KERNEL_ADDRESS-VM_MIN_KERNEL_ADDRESS) * 7 / 10)
-               bufpages = (VM_MAX_KERNEL_ADDRESS-VM_MIN_KERNEL_ADDRESS) /
-                   MAXBSIZE * 7 / 10;
        if (nbuf == 0) {
                nbuf = bufpages;
                if (nbuf < 16)
                        nbuf = 16;
        }
+
+       /* Restrict to at most 70% filled kvm */
+       if (nbuf * MAXBSIZE >
+           (VM_MAX_KERNEL_ADDRESS-VM_MIN_KERNEL_ADDRESS) * 7 / 10)
+               nbuf = (VM_MAX_KERNEL_ADDRESS-VM_MIN_KERNEL_ADDRESS) /
+                   MAXBSIZE * 7 / 10;
+
+       /* More buffer pages that fits into the buffers is senseless.  */
+       if (bufpages > nbuf * MAXBSIZE / CLBYTES)
+               bufpages = nbuf * MAXBSIZE / CLBYTES;
+
        if (nswbuf == 0) {
                nswbuf = (nbuf / 2) &~ 1;       /* force even */
                if (nswbuf > 256)