X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-mdb%2Fback-mdb.h;h=91cbf8d228ba4bb234e255a37e45007099186568;hb=59e9ff6243465640956b58ad1756a3ede53eca7c;hp=9e8025bf1dbf52ea719ca5f374b0747903eef898;hpb=21bf33b0e8e044d6722a9c3ef4a3961d71465d77;p=openldap diff --git a/servers/slapd/back-mdb/back-mdb.h b/servers/slapd/back-mdb/back-mdb.h index 9e8025bf1d..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-2015 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 @@ -50,7 +51,9 @@ LDAP_BEGIN_DECL /* 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; @@ -83,6 +86,7 @@ struct mdb_info { 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; @@ -102,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]; @@ -110,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; @@ -121,24 +133,6 @@ typedef struct mdb_op_info { #define MOI_FREEIT 0x02 #define MOI_KEEPER 0x04 -/* 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