X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-mdb%2Fback-mdb.h;h=91cbf8d228ba4bb234e255a37e45007099186568;hb=59e9ff6243465640956b58ad1756a3ede53eca7c;hp=9d5d4b1960f498d19243269138530fa404a91747;hpb=1cde3108192b580332a26753fb9a45c890cd2147;p=openldap diff --git a/servers/slapd/back-mdb/back-mdb.h b/servers/slapd/back-mdb/back-mdb.h index 9d5d4b1960..91cbf8d228 100644 --- a/servers/slapd/back-mdb/back-mdb.h +++ b/servers/slapd/back-mdb/back-mdb.h @@ -2,7 +2,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 2000-2014 The OpenLDAP Foundation. + * Copyright 2000-2018 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -32,7 +32,8 @@ LDAP_BEGIN_DECL #define MDB_AD2ID 0 #define MDB_DN2ID 1 #define MDB_ID2ENTRY 2 -#define MDB_NDB 3 +#define MDB_ID2VAL 3 +#define MDB_NDB 4 /* The default search IDL stack cache depth */ #define DEFAULT_SEARCH_STACK_DEPTH 16 @@ -47,7 +48,12 @@ LDAP_BEGIN_DECL /* Default to 10MB max */ #define DEFAULT_MAPSIZE (10*1048576) +/* Most users will never see this */ +#define DEFAULT_RTXN_SIZE 10000 + +#ifdef LDAP_DEVEL #define MDB_MONITOR_IDX +#endif typedef struct mdb_monitor_t { void *mdm_cb; @@ -61,13 +67,13 @@ struct mdb_info { MDB_env *mi_dbenv; /* DB_ENV parameters */ - /* The DB_ENV can be tuned via DB_CONFIG */ char *mi_dbenv_home; uint32_t mi_dbenv_flags; int mi_dbenv_mode; size_t mi_mapsize; ID mi_nextid; + size_t mi_maxentrysize; slap_mask_t mi_defaultmask; int mi_nattrs; @@ -76,9 +82,11 @@ struct mdb_info { int mi_search_stack_depth; int mi_readers; + uint32_t mi_rtxn_size; int mi_txn_cp; uint32_t mi_txn_cp_min; uint32_t mi_txn_cp_kbyte; + struct re_s *mi_txn_cp_task; struct re_s *mi_index_task; @@ -98,6 +106,13 @@ struct mdb_info { int mi_numads; + unsigned mi_multi_hi; + /* more than this many values in an attr goes + * into a separate DB */ + unsigned mi_multi_lo; + /* less than this many values in an attr goes + * back into main blob */ + MDB_dbi mi_dbis[MDB_NDB]; AttributeDescription *mi_ads[MDB_MAXADS]; int mi_adxs[MDB_MAXADS]; @@ -106,6 +121,7 @@ struct mdb_info { #define mi_id2entry mi_dbis[MDB_ID2ENTRY] #define mi_dn2id mi_dbis[MDB_DN2ID] #define mi_ad2id mi_dbis[MDB_AD2ID] +#define mi_id2val mi_dbis[MDB_ID2VAL] typedef struct mdb_op_info { OpExtra moi_oe; @@ -115,24 +131,7 @@ typedef struct mdb_op_info { } mdb_op_info; #define MOI_READER 0x01 #define MOI_FREEIT 0x02 - -/* Copy an ID "src" to pointer "dst" in big-endian byte order */ -#define MDB_ID2DISK( src, dst ) \ - do { int i0; ID tmp; unsigned char *_p; \ - tmp = (src); _p = (unsigned char *)(dst); \ - for ( i0=sizeof(ID)-1; i0>=0; i0-- ) { \ - _p[i0] = tmp & 0xff; tmp >>= 8; \ - } \ - } while(0) - -/* Copy a pointer "src" to a pointer "dst" from big-endian to native order */ -#define MDB_DISK2ID( src, dst ) \ - do { unsigned i0; ID tmp = 0; unsigned char *_p; \ - _p = (unsigned char *)(src); \ - for ( i0=0; i0