]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/dbcache.c
Merge remote branch 'origin/mdb.master'
[openldap] / servers / slapd / back-bdb / dbcache.c
index 8de7a9c63bcee7d90fd14f98f3660a25345d693f..9183759090b03e57f4a96071769c70f77da32f9e 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2000-2008 The OpenLDAP Foundation.
+ * Copyright 2000-2011 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -144,10 +144,23 @@ bdb_db_cache(
                }
        }
 
-       /* If no explicit size set, use the default */
+       if( bdb->bi_flags & BDB_CHKSUM ) {
+               rc = db->bdi_db->set_flags( db->bdi_db, DB_CHKSUM );
+               if ( rc ) {
+                       Debug( LDAP_DEBUG_ANY,
+                               "bdb_db_cache: db set_flags(DB_CHKSUM)(%s) failed: %s (%d)\n",
+                               bdb->bi_dbenv_home, db_strerror(rc), rc );
+                       ldap_pvt_thread_mutex_unlock( &bdb->bi_database_mutex );
+                       db->bdi_db->close( db->bdi_db, 0 );
+                       ch_free( db );
+                       return rc;
+               }
+       }
+
+       /* If no explicit size set, use the FS default */
        flags = bdb_db_findsize( bdb, name );
-       if ( !flags ) flags = BDB_PAGESIZE;
-       rc = db->bdi_db->set_pagesize( db->bdi_db, flags );
+       if ( flags )
+               rc = db->bdi_db->set_pagesize( db->bdi_db, flags );
 
 #ifdef BDB_INDEX_USE_HASH
        rc = db->bdi_db->set_h_hash( db->bdi_db, bdb_db_hash );