X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-ldbm%2Fconfig.c;h=527f3c4c43874ae1425a8a00e692f0901cb7b538;hb=4d36fd5a3ed407b0a53004d1431f1669222138b4;hp=a6c3e15a5b189af9be5a66d597e9b57fc2d361d1;hpb=352b447aa4b3c4108c3335aa429e67d153a90d64;p=openldap diff --git a/servers/slapd/back-ldbm/config.c b/servers/slapd/back-ldbm/config.c index a6c3e15a5b..527f3c4c43 100644 --- a/servers/slapd/back-ldbm/config.c +++ b/servers/slapd/back-ldbm/config.c @@ -1,7 +1,7 @@ /* config.c - ldbm backend configuration file routine */ /* $OpenLDAP$ */ /* - * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved. + * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file */ @@ -15,7 +15,6 @@ #include "slap.h" #include "back-ldbm.h" - int ldbm_back_db_config( Backend *be, @@ -102,6 +101,93 @@ ldbm_back_db_config( { li->li_dbwritesync = 0; + /* run sync thread */ + } else if ( strcasecmp( argv[0], "dbsync" ) == 0 ) { +#ifndef NO_THREADS + int i; + if ( argc < 2 ) { +#ifdef NEW_LOGGING + LDAP_LOG ( CONFIG, ERR, "ldbm_back_db_config: %s: " + "line %d: missing frequency value in \"dbsync " + "[ [wait-interval]]\" line\n", fname, lineno, 0 ); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: missing frquency value in \"dbsync [ [wait-interval]]\" line\n", + fname, lineno, 0 ); +#endif + return 1; + } + + i = atoi( argv[1] ); + + if( i < 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG ( CONFIG, ERR, + "ldbm_back_db_config: %s: " + "line %d: frequency value (%d) invalid \"dbsync " + " [ [wait-interval]]\" line\n", + fname, lineno, i ); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: frquency value (%d) invalid \"dbsync [ [wait-interval]]\" line\n", + fname, lineno, i ); +#endif + return 1; + } + + li->li_dbsyncfreq = i; + + if ( argc > 2 ) { + i = atoi( argv[2] ); + if ( i < 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG ( CONFIG,ERR, "ldbm_back_db_config: %s: " + "line %d: frequency value (%d) invalid \"dbsync " + " [ [wait-interval]]\" line\n", + fname, lineno, i ); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: frquency value (%d) invalid \"dbsync [ [wait-interval]]\" line\n", + fname, lineno, i ); +#endif + return 1; + } + li ->li_dbsyncwaitn = i; + } + + if ( argc > 3 ) { + i = atoi( argv[3] ); + if ( i <= 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG ( CONFIG,ERR, "ldbm_back_db_config: %s: " + "line %d: frequency value (%d) invalid \"dbsync " + " [ [wait-interval]]\" line\n", + fname, lineno, i ); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: frquency value (%d) invalid \"dbsync [ [wait-interval]]\" line\n", + fname, lineno, i ); +#endif + return 1; + } + li ->li_dbsyncwaitinterval = i; + } + + /* turn off writesync when sync policy is in place */ + li->li_dbwritesync = 0; + +#else +#ifdef NEW_LOGGING + LDAP_LOG ( CONFIG, ERR, "ldbm_back_db_config: \"dbsync\"" + " policies not supported in non-threaded environments\n", 0, 0, 0 ); +#else + Debug( LDAP_DEBUG_ANY, + "\"dbsync\" policies not supported in non-threaded environments\n", 0, 0, 0); +#endif + return 1; +#endif + + /* anything else */ } else { fprintf( stderr,