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 <peterjer...@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 */
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to