mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-21 03:10:25 +08:00
Into the attic this goes
This commit is contained in:
parent
661398337a
commit
1ebd53202f
@ -1,55 +0,0 @@
|
||||
As posted to http://www.openldap.org/lists/openldap-devel/200610/msg00027.html
|
||||
|
||||
This is Sleepycat bug #14908. The provided patch is for 4.2.52. The
|
||||
same bug is present in all versions up to 4.5.20 where it is fixed.
|
||||
|
||||
-------- Original Message --------
|
||||
Subject: region size bug Re: [BDB-Alpha] Berkeley DB 4.5.8 ALPHA
|
||||
Date: Mon, 10 Jul 2006 13:37:33 -0700
|
||||
From: Howard Chu <hyc@symas.com>
|
||||
To: support@sleepycat.com
|
||||
CC: support@symas.com
|
||||
References: <45A742B5-7DD5-4512-A204-A10FE8FC5DFC@oracle.com>
|
||||
|
||||
|
||||
I just ran into this in 4.2.52 but the same calculation occurs in 4.4
|
||||
and 4.5.8 alpha:
|
||||
|
||||
This computation gives the wrong results when the number of cache
|
||||
regions is greater than the number of gigabytes (which we encounter on
|
||||
Linux using shared memory regions, which are constrained to much smaller
|
||||
than a gigabyte each).
|
||||
|
||||
|
||||
in mp/mp_region.c:
|
||||
|
||||
|
||||
roff_t reg_size;
|
||||
|
||||
|
||||
/* Figure out how big each cache region is. */
|
||||
reg_size = (roff_t)(dbenv->mp_gbytes / dbenv->mp_ncache) * GIGABYTE;
|
||||
reg_size += ((roff_t)(dbenv->mp_gbytes %
|
||||
dbenv->mp_ncache) * GIGABYTE) / dbenv->mp_ncache;
|
||||
reg_size += dbenv->mp_bytes / dbenv->mp_ncache;
|
||||
*reg_sizep = reg_size;
|
||||
|
||||
|
||||
The first reg_size calculation always goes to zero when mp_ncache >
|
||||
mp_gbytes.
|
||||
This should have been, instead:
|
||||
reg_size = GIGABYTE / dbenv->mp_ncache * dbenv->mp_gbytes;
|
||||
|
||||
--- mp/mp_region.c.O 2003-06-30 10:20:19.000000000 -0700
|
||||
+++ mp/mp_region.c 2006-10-27 23:25:05.000000000 -0700
|
||||
@@ -43,9 +43,7 @@
|
||||
int htab_buckets, ret;
|
||||
|
||||
/* Figure out how big each cache region is. */
|
||||
- reg_size = (dbenv->mp_gbytes / dbenv->mp_ncache) * GIGABYTE;
|
||||
- reg_size += ((dbenv->mp_gbytes %
|
||||
- dbenv->mp_ncache) * GIGABYTE) / dbenv->mp_ncache;
|
||||
+ reg_size = GIGABYTE / dbenv->mp_ncache * dbenv->mp_gbytes;
|
||||
reg_size += dbenv->mp_bytes / dbenv->mp_ncache;
|
||||
|
||||
/*
|
Loading…
Reference in New Issue
Block a user