Lines Matching defs:mdb
3 /* config.c - mdb backend configuration file routine */
29 #include "back-mdb.h"
133 "DESC 'MDB backend configuration' "
140 "DESC 'MDB database configuration' "
192 struct mdb_info *mdb = rtask->arg;
194 mdb_env_sync( mdb->mi_dbenv, 1 );
207 struct mdb_info *mdb = be->be_private;
234 rc = mdb_txn_begin( mdb->mi_dbenv, NULL, 0, &txn );
246 rc = mdb_get( txn, mdb->mi_idxckp, &k0, &data );
263 mdb_put( txn, mdb->mi_idxckp, &k0, &data, 0 );
269 rc = mdb_cursor_open( txn, mdb->mi_id2entry, &curs );
324 rc = mdb_txn_begin( mdb->mi_dbenv, NULL, 0, &txn );
332 for ( i = 0; i < mdb->mi_nattrs; i++ ) {
333 if ( mdb->mi_attrs[ i ]->ai_indexmask & MDB_INDEX_DELETING
334 || mdb->mi_attrs[ i ]->ai_newmask == 0 )
338 mdb->mi_attrs[ i ]->ai_indexmask = mdb->mi_attrs[ i ]->ai_newmask;
339 mdb->mi_attrs[ i ]->ai_newmask = 0;
343 mdb_drop( txn, mdb->mi_idxckp, 0 );
361 } else if ( mdb->mi_index_task ) {
362 mdb->mi_index_task = NULL;
371 mdb_setup_indexer( struct mdb_info *mdb )
379 if ( !mdb->mi_nattrs )
382 rc = mdb_txn_begin( mdb->mi_dbenv, NULL, 0, &txn );
385 rc = mdb_cursor_open( txn, mdb->mi_idxckp, &curs );
393 "starting\n", mdb->mi_dbenv_home );
404 for ( i = 0; i < mdb->mi_nattrs; i++ ) {
405 if ( !mdb->mi_attrs[i]->ai_newmask ) continue;
406 s = mdb->mi_adxs[ mdb->mi_attrs[i]->ai_desc->ad_index ];
407 mask[0] = mdb->mi_attrs[i]->ai_indexmask;
408 mask[1] = mdb->mi_attrs[i]->ai_newmask;
425 "resetting to 0\n", mdb->mi_dbenv_home );
440 struct mdb_info *mdb = be->be_private;
448 rc = mdb_cursor_open( txn, mdb->mi_idxckp, &curs );
456 ad = mdb->mi_ads[*s];
457 for ( i=0; i<mdb->mi_nattrs; i++) {
458 if (mdb->mi_attrs[i]->ai_desc == ad ) {
460 mdb->mi_attrs[i]->ai_indexmask = mask[0];
461 mdb->mi_attrs[i]->ai_newmask = mask[1];
474 struct mdb_info *mdb = be->be_private;
476 mdb->mi_index_task = ldap_pvt_runqueue_insert( &slapd_rq, 36000,
486 struct mdb_info *mdb = c->be->be_private;
489 if ( mdb->mi_flags & MDB_DEL_INDEX ) {
490 mdb_attr_flush( mdb );
491 mdb->mi_flags ^= MDB_DEL_INDEX;
494 if ( mdb->mi_flags & MDB_RE_OPEN ) {
495 mdb->mi_flags ^= MDB_RE_OPEN;
510 if ( mdb->mi_flags & MDB_OPEN_INDEX ) {
511 mdb->mi_flags ^= MDB_OPEN_INDEX;
515 mdb_setup_indexer( mdb );
523 struct mdb_info *mdb = c->be->be_private;
532 bv.bv_len = snprintf( buf, sizeof(buf), "0%o", mdb->mi_dbenv_mode );
542 if ( mdb->mi_txn_cp ) {
546 (long) mdb->mi_txn_cp_kbyte, (long) mdb->mi_txn_cp_min );
559 if ( mdb->mi_dbenv_home ) {
560 c->value_string = ch_strdup( mdb->mi_dbenv_home );
567 if ( mdb->mi_dbenv_flags & MDB_NOSYNC )
572 if ( mdb->mi_dbenv_flags ) {
573 mask_to_verbs( mdb_envflags, mdb->mi_dbenv_flags, &c->rvalue_vals );
579 mdb_attr_index_unparse( mdb, &c->rvalue_vals );
584 c->value_int = mdb->mi_search_stack_depth;
588 c->value_int = mdb->mi_readers;
592 c->value_ulong = mdb->mi_mapsize;
596 mdb_attr_multi_unparse( mdb, &c->rvalue_vals );
608 mdb->bi_dbenv_mode = SLAPD_DEFAULT_DB_MODE;
619 if ( mdb->mi_txn_cp_task ) {
620 struct re_s *re = mdb->mi_txn_cp_task;
621 mdb->mi_txn_cp_task = NULL;
628 mdb->mi_txn_cp = 0;
631 mdb->mi_flags |= MDB_RE_OPEN;
632 ch_free( mdb->mi_dbenv_home );
633 mdb->mi_dbenv_home = NULL;
635 ldap_pvt_thread_pool_purgekey( mdb->mi_dbenv );
638 mdb_env_set_flags( mdb->mi_dbenv, MDB_NOSYNC, 0 );
639 mdb->mi_dbenv_flags &= ~MDB_NOSYNC;
646 if ( mdb->mi_dbenv_flags & mdb_envflags[i].mask ) {
648 rc = mdb_env_set_flags( mdb->mi_dbenv, mdb_envflags[i].mask, 0 );
650 mdb->mi_flags |= MDB_RE_OPEN;
654 mdb->mi_dbenv_flags ^= mdb_envflags[i].mask;
659 if ( mdb_envflags[i].mask & mdb->mi_dbenv_flags ) {
660 rc = mdb_env_set_flags( mdb->mi_dbenv, mdb_envflags[i].mask, 0 );
662 mdb->mi_flags |= MDB_RE_OPEN;
666 mdb->mi_dbenv_flags ^= mdb_envflags[i].mask;
682 for ( i = 0; i < mdb->mi_nattrs; i++ ) {
683 mdb->mi_attrs[i]->ai_indexmask |= MDB_INDEX_DELETING;
685 mdb->mi_defaultmask = 0;
686 mdb->mi_flags |= MDB_DEL_INDEX;
698 mdb->mi_defaultmask = 0;
718 ai = mdb_attr_mask( mdb, ad );
723 mdb->mi_flags |= MDB_DEL_INDEX;
737 for ( i = 0; i < mdb->mi_nattrs; i++ ) {
738 mdb->mi_attrs[i]->ai_multi_hi = UINT_MAX;
739 mdb->mi_attrs[i]->ai_multi_lo = UINT_MAX;
741 mdb->mi_multi_hi = UINT_MAX;
742 mdb->mi_multi_lo = UINT_MAX;
753 mdb->mi_multi_hi = UINT_MAX;
754 mdb->mi_multi_lo = UINT_MAX;
774 ai = mdb_attr_mask( mdb, ad );
804 mdb->mi_dbenv_mode = mode;
829 mdb->mi_dbenv_mode = mode;
846 mdb->mi_txn_cp = 1;
847 mdb->mi_txn_cp_kbyte = cp_kbyte;
848 mdb->mi_txn_cp_min = cp_min;
852 if ((slapMode & SLAP_SERVER_MODE) && mdb->mi_txn_cp_min ) {
853 struct re_s *re = mdb->mi_txn_cp_task;
855 re->interval.tv_sec = mdb->mi_txn_cp_min * 60;
864 mdb->mi_txn_cp_task = ldap_pvt_runqueue_insert( &slapd_rq,
865 mdb->mi_txn_cp_min * 60, mdb_checkpoint, mdb,
897 if ( mdb->mi_dbenv_home )
898 ch_free( mdb->mi_dbenv_home );
899 mdb->mi_dbenv_home = c->value_string;
906 mdb->mi_dbenv_flags |= MDB_NOSYNC;
908 mdb->mi_dbenv_flags &= ~MDB_NOSYNC;
909 if ( mdb->mi_flags & MDB_IS_OPEN ) {
910 mdb_env_set_flags( mdb->mi_dbenv, MDB_NOSYNC,
920 if ( mdb->mi_flags & MDB_IS_OPEN )
921 rc = mdb_env_set_flags( mdb->mi_dbenv, mdb_envflags[j].mask, 1 );
925 mdb->mi_flags |= MDB_RE_OPEN;
929 mdb->mi_dbenv_flags |= mdb_envflags[j].mask;
942 rc = mdb_attr_index_config( mdb, c->fname, c->lineno,
946 if ( mdb->mi_flags & MDB_IS_OPEN ) {
947 mdb->mi_flags |= MDB_OPEN_INDEX;
949 if ( !mdb->mi_index_task ) {
960 mdb->mi_index_task = ldap_pvt_runqueue_insert( &slapd_rq, 36000,
975 mdb->mi_search_stack_depth = c->value_int;
979 mdb->mi_readers = c->value_int;
980 if ( mdb->mi_flags & MDB_IS_OPEN ) {
981 mdb->mi_flags |= MDB_RE_OPEN;
987 mdb->mi_mapsize = c->value_ulong;
988 if ( mdb->mi_flags & MDB_IS_OPEN ) {
989 mdb->mi_flags |= MDB_RE_OPEN;
995 rc = mdb_attr_multi_config( mdb, c->fname, c->lineno,