123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- This patch is intended to be applied to Berkeley DB 4.2.52 and,
- if applied, will automatically be used by slapd(8) back-bdb/hdb.
- Without this patch the BDB DB_LOG_AUTOREMOVE option will not work,
- nor will db_archive allow any transaction log files to be removed
- while slapd is running.
- The patch can be applied to the BDB source using patch(1) as follows
- cd db-4.2.52
- patch -p0 < openldap-src/build/BerkeleyDB42.patch
- (modify directory paths as necessary), then recompile and reinstall
- the BerkeleyDB 4.2 library, and then build and install OpenLDAP
- Software.
- The patch should not be applied to Berkeley DB 4.3.
- Index: dbinc/db.in
- ===================================================================
- RCS file: /var/CVSROOT/bdb42/dbinc/db.in,v
- retrieving revision 1.1.1.1
- retrieving revision 1.2
- diff -u -r1.1.1.1 -r1.2
- --- dbinc/db.in 25 Nov 2003 21:58:02 -0000 1.1.1.1
- +++ dbinc/db.in 17 Jul 2004 16:07:23 -0000 1.2
- @@ -839,6 +839,7 @@
- #define TXN_NOWAIT 0x040 /* Do not wait on locks. */
- #define TXN_RESTORED 0x080 /* Transaction has been restored. */
- #define TXN_SYNC 0x100 /* Sync on prepare and commit. */
- +#define TXN_NOLOG 0x200 /* Do not log this transaction. */
- u_int32_t flags;
- };
-
- Index: txn/txn.c
- ===================================================================
- RCS file: /var/CVSROOT/bdb42/txn/txn.c,v
- retrieving revision 1.1.1.2
- retrieving revision 1.2
- diff -u -r1.1.1.2 -r1.2
- --- txn/txn.c 17 Dec 2003 21:43:53 -0000 1.1.1.2
- +++ txn/txn.c 17 Jul 2004 16:07:27 -0000 1.2
- @@ -127,7 +127,7 @@
- if ((ret = __db_fchk(dbenv,
- "txn_begin", flags,
- DB_DIRTY_READ | DB_TXN_NOWAIT |
- - DB_TXN_NOSYNC | DB_TXN_SYNC)) != 0)
- + DB_TXN_NOSYNC | DB_TXN_SYNC | DB_TXN_NOT_DURABLE)) != 0)
- return (ret);
- if ((ret = __db_fcchk(dbenv,
- "txn_begin", flags, DB_TXN_NOSYNC, DB_TXN_SYNC)) != 0)
- @@ -193,6 +193,8 @@
- F_SET(txn, TXN_SYNC);
- if (LF_ISSET(DB_TXN_NOWAIT))
- F_SET(txn, TXN_NOWAIT);
- + if (LF_ISSET(DB_TXN_NOT_DURABLE))
- + F_SET(txn, TXN_NOLOG);
-
- if ((ret = __txn_begin_int(txn, 0)) != 0)
- goto err;
- @@ -328,7 +330,7 @@
- * We should set this value when we write the first log record, not
- * here.
- */
- - if (DBENV_LOGGING(dbenv))
- + if (DBENV_LOGGING(dbenv) && !F_ISSET(txn, TXN_NOLOG))
- __log_txn_lsn(dbenv, &begin_lsn, NULL, NULL);
- else
- ZERO_LSN(begin_lsn);
|