svn commit: r206178 - head/lib/libc/db/hash

Andriy Gapon avg at FreeBSD.org
Mon Apr 5 10:12:21 UTC 2010


Author: avg
Date: Mon Apr  5 10:12:21 2010
New Revision: 206178
URL: http://svn.freebsd.org/changeset/base/206178

Log:
  libc/db/hash: cap auto-tuned block size with a value that actually works
  
  This fix mostly matters after r206129 that made it possible for
  st_blksize to be greater than 4K.  For this reason, this change should
  be MFC-ed before r206129.
  Also, it seems that all FreeBSD uitlities that use db(3) hash databases
  and create new databases in files, specify their own block size value
  and thus do not depend on block size autotuning.
  
  PR:		bin/144446
  Submitted by:	Peter Jeremy <peterjeremy at acm.org>
  MFC after:	5 days

Modified:
  head/lib/libc/db/hash/hash.c
  head/lib/libc/db/hash/hash.h

Modified: head/lib/libc/db/hash/hash.c
==============================================================================
--- head/lib/libc/db/hash/hash.c	Mon Apr  5 10:01:53 2010	(r206177)
+++ head/lib/libc/db/hash/hash.c	Mon Apr  5 10:12:21 2010	(r206178)
@@ -293,6 +293,8 @@ init_hash(HTAB *hashp, const char *file,
 		if (stat(file, &statbuf))
 			return (NULL);
 		hashp->BSIZE = statbuf.st_blksize;
+		if (hashp->BSIZE > MAX_BSIZE)
+			hashp->BSIZE = MAX_BSIZE;
 		hashp->BSHIFT = __log2(hashp->BSIZE);
 	}
 

Modified: head/lib/libc/db/hash/hash.h
==============================================================================
--- head/lib/libc/db/hash/hash.h	Mon Apr  5 10:01:53 2010	(r206177)
+++ head/lib/libc/db/hash/hash.h	Mon Apr  5 10:12:21 2010	(r206178)
@@ -118,7 +118,7 @@ typedef struct htab	 {		/* Memory reside
 /*
  * Constants
  */
-#define	MAX_BSIZE		65536		/* 2^16 */
+#define	MAX_BSIZE		32768		/* 2^15 but should be 65536 */
 #define MIN_BUFFERS		6
 #define MINHDRSIZE		512
 #define DEF_BUFSIZE		65536		/* 64 K */


More information about the svn-src-head mailing list