From 59de0a47354ef3c43bec67cee68231f6343cc4ea Mon Sep 17 00:00:00 2001
From: Quanah Gibson-Mount <quanah@openldap.org>
Date: Tue, 12 Feb 2008 01:34:58 +0000
Subject: [PATCH] Cleanup bdb_next_id unused arg

---
 servers/slapd/back-bdb/add.c       | 28 ++++++++++++++--------------
 servers/slapd/back-bdb/nextid.c    |  2 +-
 servers/slapd/back-bdb/proto-bdb.h |  2 +-
 servers/slapd/back-bdb/tools.c     |  2 +-
 4 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/servers/slapd/back-bdb/add.c b/servers/slapd/back-bdb/add.c
index a6fcfc8bf0..b10f7d239e 100644
--- a/servers/slapd/back-bdb/add.c
+++ b/servers/slapd/back-bdb/add.c
@@ -33,6 +33,7 @@ bdb_add(Operation *op, SlapReply *rs )
 	AttributeDescription *children = slap_schema.si_ad_children;
 	AttributeDescription *entry = slap_schema.si_ad_entry;
 	DB_TXN		*ltid = NULL, *lt2;
+	ID eid = NOID;
 	struct bdb_op_info opinfo = {0};
 	int subentry;
 	BDB_LOCKER	locker = 0, rlocker = 0;
@@ -115,20 +116,6 @@ txnReturn:
 
 	subentry = is_entry_subentry( op->oq_add.rs_e );
 
-	/*
-	 * acquire an ID outside of the operation transaction
-	 * to avoid serializing adds.
-	 */
-	rs->sr_err = bdb_next_id( op->o_bd, NULL, &op->oq_add.rs_e->e_id );
-	if( rs->sr_err != 0 ) {
-		Debug( LDAP_DEBUG_TRACE,
-			LDAP_XSTRING(bdb_add) ": next_id failed (%d)\n",
-			rs->sr_err, 0, 0 );
-		rs->sr_err = LDAP_OTHER;
-		rs->sr_text = "internal error";
-		goto return_results;
-	}
-
 	/* Get our thread locker ID */
 	rs->sr_err = LOCK_ID( bdb->bi_dbenv, &rlocker );
 
@@ -315,6 +302,19 @@ retry:	/* transaction retry */
 		goto return_results;;
 	}
 
+	if ( eid == NOID ) {
+		rs->sr_err = bdb_next_id( op->o_bd, &eid );
+		if( rs->sr_err != 0 ) {
+			Debug( LDAP_DEBUG_TRACE,
+				LDAP_XSTRING(bdb_add) ": next_id failed (%d)\n",
+				rs->sr_err, 0, 0 );
+			rs->sr_err = LDAP_OTHER;
+			rs->sr_text = "internal error";
+			goto return_results;
+		}
+		op->oq_add.rs_e->e_id = eid;
+	}
+
 	/* nested transaction */
 	rs->sr_err = TXN_BEGIN( bdb->bi_dbenv, ltid, &lt2, 
 		bdb->bi_db_opflags );
diff --git a/servers/slapd/back-bdb/nextid.c b/servers/slapd/back-bdb/nextid.c
index 2eb6f5b85a..fe62acb8b5 100644
--- a/servers/slapd/back-bdb/nextid.c
+++ b/servers/slapd/back-bdb/nextid.c
@@ -21,7 +21,7 @@
 
 #include "back-bdb.h"
 
-int bdb_next_id( BackendDB *be, DB_TXN *tid, ID *out )
+int bdb_next_id( BackendDB *be, ID *out )
 {
 	struct bdb_info *bdb = (struct bdb_info *) be->be_private;
 
diff --git a/servers/slapd/back-bdb/proto-bdb.h b/servers/slapd/back-bdb/proto-bdb.h
index 095dee532c..dc5a713e78 100644
--- a/servers/slapd/back-bdb/proto-bdb.h
+++ b/servers/slapd/back-bdb/proto-bdb.h
@@ -419,7 +419,7 @@ bdb_key_change(
 #define bdb_next_id					BDB_SYMBOL(next_id)
 #define bdb_last_id					BDB_SYMBOL(last_id)
 
-int bdb_next_id( BackendDB *be, DB_TXN *tid, ID *id );
+int bdb_next_id( BackendDB *be, ID *id );
 int bdb_last_id( BackendDB *be, DB_TXN *tid );
 
 /*
diff --git a/servers/slapd/back-bdb/tools.c b/servers/slapd/back-bdb/tools.c
index f5051a19de..3583edcb75 100644
--- a/servers/slapd/back-bdb/tools.c
+++ b/servers/slapd/back-bdb/tools.c
@@ -364,7 +364,7 @@ static int bdb_tool_next_id(
 				ei = &eidummy;
 			}
 		}
-		rc = bdb_next_id( op->o_bd, tid, &e->e_id );
+		rc = bdb_next_id( op->o_bd, &e->e_id );
 		if ( rc ) {
 			snprintf( text->bv_val, text->bv_len,
 				"next_id failed: %s (%d)",
-- 
GitLab