Date: Thu, 12 Sep 2002 15:23:21 -0700 From: Terry Lambert <tlambert2@mindspring.com> To: Norikatsu Shigemura <nork@FreeBSD.org> Cc: freebsd-hackers@FreeBSD.org Subject: Re: filesytem bsize=64k causes libc/db hash crash Message-ID: <3D8113D9.CBF06664@mindspring.com> References: <200209122022.g8CKM004040532@nd250009.gab.xdsl.ne.jp>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
Norikatsu Shigemura wrote:
> I found a problem on 4-STABLE(maybe 5-CURRENT, too) with libc/db
> (BerkeleyDB 1). It that when block size on fs is 65536 bytes,
> many programs which use BerkeleyDB(dev_mkdb, cap_mkdb, etc..) are
> crash.
Here is a patch; it's ugly, but it works.
-- Terry
[-- Attachment #2 --]
Index: btree/bt_open.c
===================================================================
RCS file: /usr/cvs/src/lib/libc/db/btree/bt_open.c,v
retrieving revision 1.7.2.1
diff -c -r1.7.2.1 bt_open.c
*** btree/bt_open.c 2 Nov 2000 10:30:07 -0000 1.7.2.1
--- btree/bt_open.c 12 Sep 2002 22:28:51 -0000
***************
*** 262,267 ****
--- 262,269 ----
*/
if (b.psize == 0) {
b.psize = sb.st_blksize;
+ if (b.psize > 32768)
+ b.psize = 32868;
if (b.psize < MINPSIZE)
b.psize = MINPSIZE;
if (b.psize > MAX_PAGE_OFFSET + 1)
Index: hash/hash.c
===================================================================
RCS file: /usr/cvs/src/lib/libc/db/hash/hash.c,v
retrieving revision 1.8
diff -c -r1.8 hash.c
*** hash/hash.c 27 Jan 2000 23:06:08 -0000 1.8
--- hash/hash.c 12 Sep 2002 22:28:26 -0000
***************
*** 311,316 ****
--- 311,318 ----
if (stat(file, &statbuf))
return (NULL);
hashp->BSIZE = statbuf.st_blksize;
+ if (hashp->BSIZE > 32768)
+ hashp->BSIZE = 32868;
hashp->BSHIFT = __log2(hashp->BSIZE);
}
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3D8113D9.CBF06664>
