]> git.sur5r.net Git - openldap/commitdiff
Reply on DB_CONFIG for tuning...
authorKurt Zeilenga <kurt@openldap.org>
Wed, 20 Sep 2000 02:01:05 +0000 (02:01 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Wed, 20 Sep 2000 02:01:05 +0000 (02:01 +0000)
servers/slapd/back-bdb/back-bdb.h
servers/slapd/back-bdb/init.c

index 8d6e0dd7fe62a4f8b84c3f48818d2a213beee638..503e5de0a05d7b851ec31e37604b29c47aa1fb5d 100644 (file)
@@ -23,11 +23,11 @@ LDAP_BEGIN_DECL
 
 #define DEFAULT_MODE           0600
 
-#define DEFAULT_DBENV_HOME     LDAP_RUNDIR LDAP_DIRSEP "openldap-bdb"
+#define BDB_DBENV_HOME LDAP_RUNDIR LDAP_DIRSEP "openldap-bdb"
 
-#define DEFAULT_DB_TMP_DIR     DEFAULT_DBENV_HOME LDAP_DIRSEP "tmp"
-#define DEFAULT_DB_LG_DIR      DEFAULT_DBENV_HOME LDAP_DIRSEP "log"
-#define DEFAULT_DB_DATA_DIR    DEFAULT_DBENV_HOME LDAP_DIRSEP "data"
+#define BDB_TMP_SUBDIR LDAP_DIRSEP "tmp"
+#define BDB_LG_SUBDIR  LDAP_DIRSEP "log"
+#define BDB_DATA_SUBDIR        LDAP_DIRSEP "data"
 
 #define BDB_NEXTID     0
 #define BDB_ENTRIES    1
@@ -40,19 +40,12 @@ struct bdb_db_info {
 struct bdb_info {
        DB_ENV          *bi_dbenv;
 
-       /* DB_env parameters */
+       /* DB_ENV parameters */
+       /* The DB_ENV can be tuned via DB_CONFIG */
        char            *bi_dbenv_home;
        u_int32_t       bi_dbenv_xflags; /* extra flags */
        int                     bi_dbenv_mode;
 
-       int                     bi_tx_max;
-
-       char            *bi_db_tmp_dir;
-       char            *bi_db_lg_dir;
-       char            *bi_db_data_dir;
-
-       ID                      *bi_lastid;
-
        int                     bi_ndatabases;
        struct bdb_db_info **bdi_databases;
 };
index b33811061fba86a69a1a1cdcbe79ccad6219f62c..0fbc7b882f9b5bb5c9792b7579fafa1008af46ea 100644 (file)
@@ -43,17 +43,10 @@ bi_back_db_init( Backend *be )
        bdb = (struct bdb_info *) ch_calloc( 1, sizeof(struct bdb_info) );
 
        /* DBEnv parameters */
-       bdb->bi_dbenv_home = ch_strdup( DEFAULT_DBENV_HOME );
+       bdb->bi_dbenv_home = ch_strdup( BDB_DBENV_HOME );
        bdb->bi_dbenv_xflags = 0;
        bdb->bi_dbenv_mode = DEFAULT_MODE;
 
-       /* default database directories */
-       bdb->bi_db_tmp_dir = ch_strdup( DEFAULT_DB_TMP_DIR );
-       bdb->bi_db_lg_dir = ch_strdup( DEFAULT_DB_LG_DIR );
-       bdb->bi_db_data_dir = ch_strdup( DEFAULT_DB_DATA_DIR );
-
-       bdb->bi_lastid = NOID;
-
        be->be_private = bdb;
        return 0;
 }
@@ -64,7 +57,6 @@ bi_back_db_open( BackendDB *be )
        int rc;
        struct bdb_info *bdb = (struct bdb_info *) be->be_private;
        u_int32_t flags;
-
        /* we should check existance of dbenv_home and db_directory */
 
        rc = db_env_create( &bdb->bi_dbenv, 0 );
@@ -87,42 +79,40 @@ bi_back_db_open( BackendDB *be )
        bdb->bi_dbenv->set_errpfx( bdb->bi_dbenv, be->be_suffix[0] );
        bdb->bi_dbenv->set_errcall( bdb->bi_dbenv, bdb_errcall );
 
-       if( bdb->bi_tx_max ) {
-               rc = bdb->bi_dbenv->set_tx_max( bdb->bi_dbenv,
-                       bdb->bi_tx_max );
+       {
+               char dir[MAXPATHLEN];
+               size_t len = strlen( bdb->bi_dbenv_home );
+
+               strcpy( dir, bdb->bi_dbenv_home );
+               strcat( &dir[len], BDB_TMP_SUBDIR );
+               
+               rc = bdb->bi_dbenv->set_tmp_dir( bdb->bi_dbenv, dir );
                if( rc != 0 ) {
                        Debug( LDAP_DEBUG_ANY,
-                               "bi_back_db_open: set_tx_max(%d) failed: %s (%d)\n",
-                               bdb->bi_tx_max, db_strerror(rc), rc );
+                               "bi_back_db_open: set_tmp_dir(%s) failed: %s (%d)\n",
+                               dir, db_strerror(rc), rc );
                        return rc;
                }
-       }
 
-       rc = bdb->bi_dbenv->set_tmp_dir( bdb->bi_dbenv,
-               bdb->bi_db_tmp_dir );
-       if( rc != 0 ) {
-               Debug( LDAP_DEBUG_ANY,
-                       "bi_back_db_open: set_tmp_dir(%s) failed: %s (%d)\n",
-                       bdb->bi_db_tmp_dir, db_strerror(rc), rc );
-               return rc;
-       }
+               strcat( &dir[len], BDB_LG_SUBDIR );
 
-       rc = bdb->bi_dbenv->set_lg_dir( bdb->bi_dbenv,
-               bdb->bi_db_lg_dir );
-       if( rc != 0 ) {
-               Debug( LDAP_DEBUG_ANY,
-                       "bi_back_db_open: set_lg_dir(%s) failed: %s (%d)\n",
-                       bdb->bi_db_lg_dir, db_strerror(rc), rc );
-               return rc;
-       }
+               rc = bdb->bi_dbenv->set_lg_dir( bdb->bi_dbenv, dir );
+               if( rc != 0 ) {
+                       Debug( LDAP_DEBUG_ANY,
+                               "bi_back_db_open: set_lg_dir(%s) failed: %s (%d)\n",
+                               dir, db_strerror(rc), rc );
+                       return rc;
+               }
 
-       rc = bdb->bi_dbenv->set_data_dir( bdb->bi_dbenv,
-               bdb->bi_db_data_dir );
-       if( rc != 0 ) {
-               Debug( LDAP_DEBUG_ANY,
-                       "bi_back_db_open: set_data_dir(%s) failed: %s (%d)\n",
-                       bdb->bi_db_data_dir, db_strerror(rc), rc );
-               return rc;
+               strcat( &dir[len], BDB_DATA_SUBDIR );
+
+               rc = bdb->bi_dbenv->set_data_dir( bdb->bi_dbenv, dir );
+               if( rc != 0 ) {
+                       Debug( LDAP_DEBUG_ANY,
+                               "bi_back_db_open: set_data_dir(%s) failed: %s (%d)\n",
+                               dir, db_strerror(rc), rc );
+                       return rc;
+               }
        }
 
        rc = bdb->bi_dbenv->open( bdb->bi_dbenv,
@@ -136,6 +126,8 @@ bi_back_db_open( BackendDB *be )
                return rc;
        }
 
+       /* we now need to open (and create) all database */
+
        return 0;
 }