Lines Matching defs:mdb
3 /* init.c - initialize mdb backend */
30 #include "back-mdb.h"
53 struct mdb_info *mdb;
57 LDAP_XSTRING(mdb_db_init) ": Initializing mdb database\n" );
60 mdb = (struct mdb_info *) ch_calloc( 1, sizeof(struct mdb_info) );
63 mdb->mi_dbenv_home = ch_strdup( SLAPD_DEFAULT_DB_DIR );
64 mdb->mi_dbenv_flags = 0;
65 mdb->mi_dbenv_mode = SLAPD_DEFAULT_DB_MODE;
67 mdb->mi_search_stack_depth = DEFAULT_SEARCH_STACK_DEPTH;
68 mdb->mi_search_stack = NULL;
70 mdb->mi_mapsize = DEFAULT_MAPSIZE;
71 mdb->mi_rtxn_size = DEFAULT_RTXN_SIZE;
72 mdb->mi_multi_hi = UINT_MAX;
73 mdb->mi_multi_lo = UINT_MAX;
75 be->be_private = mdb;
94 struct mdb_info *mdb = (struct mdb_info *) be->be_private;
112 rc = stat( mdb->mi_dbenv_home, &stat1 );
118 be->be_suffix[0].bv_val, mdb->mi_dbenv_home, saved_errno );
122 /* mdb is always clean */
125 rc = mdb_env_create( &mdb->mi_dbenv );
134 if ( mdb->mi_readers ) {
135 rc = mdb_env_set_maxreaders( mdb->mi_dbenv, mdb->mi_readers );
145 rc = mdb_env_set_mapsize( mdb->mi_dbenv, mdb->mi_mapsize );
154 rc = mdb_env_set_maxdbs( mdb->mi_dbenv, MDB_INDICES );
164 strcpy( path, mdb->mi_dbenv_home );
168 dbhome = mdb->mi_dbenv_home;
174 be->be_suffix[0].bv_val, mdb->mi_dbenv_home );
176 flags = mdb->mi_dbenv_flags;
184 rc = mdb_env_open( mdb->mi_dbenv, dbhome,
185 flags, mdb->mi_dbenv_mode );
195 rc = mdb_txn_begin( mdb->mi_dbenv, NULL, flags & MDB_RDONLY, &txn );
222 &mdb->mi_dbis[i] );
230 mdb->mi_dbenv_home, mdmi_databases[i].bv_val,
240 mdb_set_compare( txn, mdb->mi_dbis[i], mdb_id_compare );
242 mdb_set_compare( txn, mdb->mi_dbis[i], mdb_id2v_compare );
243 mdb_set_dupsort( txn, mdb->mi_dbis[i], mdb_id2v_dupsort );
247 mdb_set_dupsort( txn, mdb->mi_dbis[i], mdb_dup_compare );
249 rc = mdb_cursor_open( txn, mdb->mi_dbis[i], &mc );
269 mdb->mi_flags |= MDB_NEED_UPGRADE;
279 rc = mdb_ad_read( mdb, txn );
298 rc = mdb_stat( txn, mdb->mi_idxckp, &st );
318 mdb->mi_flags |= MDB_IS_OPEN;
334 struct mdb_info *mdb = (struct mdb_info *) be->be_private;
339 mdb->mi_flags &= ~MDB_IS_OPEN;
342 if ( mdb->mi_index_task ) {
343 struct re_s *re = mdb->mi_index_task;
345 mdb->mi_index_task = NULL;
353 if ( mdb->mi_dbenv ) {
354 mdb_reader_flush( mdb->mi_dbenv );
356 if ( mdb->mi_dbis[0] ) {
359 mdb_attr_dbs_close( mdb );
361 mdb_dbi_close( mdb->mi_dbenv, mdb->mi_dbis[i] );
367 rc = mdb_env_sync( mdb->mi_dbenv, 1 );
377 mdb_env_close( mdb->mi_dbenv );
378 mdb->mi_dbenv = NULL;
387 struct mdb_info *mdb = (struct mdb_info *) be->be_private;
390 if ( mdb->mi_txn_cp_task ) {
391 struct re_s *re = mdb->mi_txn_cp_task;
392 mdb->mi_txn_cp_task = NULL;
403 if( mdb->mi_dbenv_home ) ch_free( mdb->mi_dbenv_home );
405 mdb_attr_index_destroy( mdb );
407 ch_free( mdb );
453 * the output. Strings from the MDB library are already
465 "MDB library version mismatch:"
532 SLAP_BACKEND_INIT_MODULE( mdb )