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