X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-mdb%2Fconfig.c;h=c1995176e8985ad29090d5b03fb6272474eb23d0;hb=7f3da6c9b7af5ef5b8e45fbe6cbc405967b6baf8;hp=7576b33f209f31a9ab9811850c8b25d7441d3d93;hpb=f1f8078973c1c9f2af85abfe72e1ad23f41c81d8;p=openldap diff --git a/servers/slapd/back-mdb/config.c b/servers/slapd/back-mdb/config.c index 7576b33f20..c1995176e8 100644 --- a/servers/slapd/back-mdb/config.c +++ b/servers/slapd/back-mdb/config.c @@ -2,7 +2,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 2000-2014 The OpenLDAP Foundation. + * Copyright 2000-2015 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -39,7 +39,8 @@ enum { MDB_MAXREADERS, MDB_MAXSIZE, MDB_MODE, - MDB_SSTACK + MDB_SSTACK, + MDB_MAXENTSZ }; static ConfigTable mdbcfg[] = { @@ -66,6 +67,10 @@ static ConfigTable mdbcfg[] = { "DESC 'Attribute index parameters' " "EQUALITY caseIgnoreMatch " "SYNTAX OMsDirectoryString )", NULL, NULL }, + { "maxentrysize", "size", 2, 2, 0, ARG_ULONG|ARG_MAGIC|MDB_MAXENTSZ, + mdb_cf_gen, "( OLcfgDbAt:12.4 NAME 'olcDbMaxEntrySize' " + "DESC 'Maximum size of an entry in bytes' " + "SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL }, { "maxreaders", "num", 2, 2, 0, ARG_UINT|ARG_MAGIC|MDB_MAXREADERS, mdb_cf_gen, "( OLcfgDbAt:12.1 NAME 'olcDbMaxReaders' " "DESC 'Maximum number of threads that may access the DB concurrently' " @@ -94,8 +99,8 @@ static ConfigOCs mdbocs[] = { "SUP olcDatabaseConfig " "MUST olcDbDirectory " "MAY ( olcDbCheckpoint $ olcDbEnvFlags $ " - "olcDbNoSync $ olcDbIndex $ olcDbMaxReaders $ olcDbMaxsize $ " - "olcDbMode $ olcDbSearchStack ) )", + "olcDbNoSync $ olcDbIndex $ olcDbMaxReaders $ olcDbMaxSize $ " + "olcDbMode $ olcDbSearchStack $ olcDbMaxEntrySize ) )", Cft_Database, mdbcfg }, { NULL, 0, NULL } }; @@ -329,6 +334,10 @@ mdb_cf_gen( ConfigArgs *c ) c->value_int = mdb->mi_search_stack_depth; break; + case MDB_MAXENTSZ: + c->value_ulong = mdb->mi_maxentrysize; + break; + case MDB_MAXREADERS: c->value_int = mdb->mi_readers; break; @@ -355,6 +364,10 @@ mdb_cf_gen( ConfigArgs *c ) case MDB_MAXSIZE: break; + case MDB_MAXENTSZ: + mdb->mi_maxentrysize = 0; + break; + case MDB_CHKPT: if ( mdb->mi_txn_cp_task ) { struct re_s *re = mdb->mi_txn_cp_task; @@ -406,6 +419,9 @@ mdb_cf_gen( ConfigArgs *c ) mdb->mi_dbenv_flags ^= mdb_envflags[i].mask; } else { /* unknown keyword */ + snprintf( c->cr_msg, sizeof( c->cr_msg ), "%s: unknown keyword \"%s\"", + c->argv[0], c->argv[i] ); + Debug( LDAP_DEBUG_CONFIG, "%s %s\n", c->log, c->cr_msg, 0 ); rc = 1; } } @@ -608,7 +624,10 @@ mdb_cf_gen( ConfigArgs *c ) mdb->mi_dbenv_flags |= mdb_envflags[j].mask; } else { /* unknown keyword */ - rc = 1; + snprintf( c->cr_msg, sizeof( c->cr_msg ), "%s: unknown keyword \"%s\"", + c->argv[0], c->argv[i] ); + Debug( LDAP_DEBUG_ANY, "%s %s\n", c->log, c->cr_msg, 0 ); + return 1; } } } @@ -619,23 +638,25 @@ mdb_cf_gen( ConfigArgs *c ) c->argc - 1, &c->argv[1], &c->reply); if( rc != LDAP_SUCCESS ) return 1; - c->cleanup = mdb_cf_cleanup; mdb->mi_flags |= MDB_OPEN_INDEX; - if (( mdb->mi_flags & MDB_IS_OPEN ) && !mdb->mi_index_task ) { - /* Start the task as soon as we finish here. Set a long - * interval (10 hours) so that it only gets scheduled once. - */ - if ( c->be->be_suffix == NULL || BER_BVISNULL( &c->be->be_suffix[0] ) ) { - fprintf( stderr, "%s: " - "\"index\" must occur after \"suffix\".\n", - c->log ); - return 1; + if ( mdb->mi_flags & MDB_IS_OPEN ) { + c->cleanup = mdb_cf_cleanup; + if ( !mdb->mi_index_task ) { + /* Start the task as soon as we finish here. Set a long + * interval (10 hours) so that it only gets scheduled once. + */ + if ( c->be->be_suffix == NULL || BER_BVISNULL( &c->be->be_suffix[0] ) ) { + fprintf( stderr, "%s: " + "\"index\" must occur after \"suffix\".\n", + c->log ); + return 1; + } + ldap_pvt_thread_mutex_lock( &slapd_rq.rq_mutex ); + mdb->mi_index_task = ldap_pvt_runqueue_insert( &slapd_rq, 36000, + mdb_online_index, c->be, + LDAP_XSTRING(mdb_online_index), c->be->be_suffix[0].bv_val ); + ldap_pvt_thread_mutex_unlock( &slapd_rq.rq_mutex ); } - ldap_pvt_thread_mutex_lock( &slapd_rq.rq_mutex ); - mdb->mi_index_task = ldap_pvt_runqueue_insert( &slapd_rq, 36000, - mdb_online_index, c->be, - LDAP_XSTRING(mdb_online_index), c->be->be_suffix[0].bv_val ); - ldap_pvt_thread_mutex_unlock( &slapd_rq.rq_mutex ); } break; @@ -649,6 +670,10 @@ mdb_cf_gen( ConfigArgs *c ) mdb->mi_search_stack_depth = c->value_int; break; + case MDB_MAXENTSZ: + mdb->mi_maxentrysize = c->value_ulong; + break; + case MDB_MAXREADERS: mdb->mi_readers = c->value_int; if ( mdb->mi_flags & MDB_IS_OPEN ) {