]> git.sur5r.net Git - openldap/commitdiff
DB_RMW flag to dn2id and id2entry
authorJong Hyuk Choi <jongchoi@openldap.org>
Mon, 10 Jun 2002 19:02:25 +0000 (19:02 +0000)
committerJong Hyuk Choi <jongchoi@openldap.org>
Mon, 10 Jun 2002 19:02:25 +0000 (19:02 +0000)
servers/slapd/back-bdb/delete.c
servers/slapd/back-bdb/dn2entry.c
servers/slapd/back-bdb/dn2id.c
servers/slapd/back-bdb/id2entry.c
servers/slapd/back-bdb/modify.c
servers/slapd/back-bdb/modrdn.c
servers/slapd/back-bdb/operational.c
servers/slapd/back-bdb/proto-bdb.h

index a348631cc73205f4f1564e750ddaf69f75e85d53..8c26e9a08054771297a633e2cfe9b428ed46f2b7 100644 (file)
@@ -309,7 +309,7 @@ retry:      /* transaction retry */
                goto done;
        }
 
-       rc = bdb_dn2id_children( be, ltid, &e->e_nname );
+       rc = bdb_dn2id_children( be, ltid, &e->e_nname, 0 );
        if( rc != DB_NOTFOUND ) {
                switch( rc ) {
                case DB_LOCK_DEADLOCK:
index a6440536f7ebb662761bab2260d71ab522273371..497514113050e57a51ed8ceefc2739dff0c994da 100644 (file)
@@ -44,9 +44,9 @@ bdb_dn2entry_rw(
 
        if( matched != NULL ) {
                *matched = NULL;
-               rc = bdb_dn2id_matched( be, tid, dn, &id, &id2 );
+               rc = bdb_dn2id_matched( be, tid, dn, &id, &id2, flags );
        } else {
-               rc = bdb_dn2id( be, tid, dn, &id );
+               rc = bdb_dn2id( be, tid, dn, &id, flags );
        }
 
        if( rc != 0 ) {
index d9792904fb64bcb48a55dc55f4e4876d842644e7..ea63172b6aa7f11d0a9b3197908f3116c66d53a5 100644 (file)
@@ -270,7 +270,8 @@ bdb_dn2id(
        BackendDB       *be,
        DB_TXN *txn,
        struct berval   *dn,
-       ID *id )
+       ID *id,
+       int flags )
 {
        int             rc;
        DBT             key, data;
@@ -304,7 +305,7 @@ bdb_dn2id(
        data.flags = DB_DBT_USERMEM;
 
        /* fetch it */
-       rc = db->get( db, txn, &key, &data, bdb->bi_db_opflags );
+       rc = db->get( db, txn, &key, &data, bdb->bi_db_opflags | flags);
 
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
@@ -335,7 +336,8 @@ bdb_dn2id_matched(
        DB_TXN *txn,
        struct berval   *in,
        ID *id,
-       ID *id2 )
+       ID *id2,
+       int flags )
 {
        int             rc;
        DBT             key, data;
@@ -383,7 +385,7 @@ bdb_dn2id_matched(
                        break;
                } else {
                        /* fetch it */
-                       rc = db->get(db, txn, &key, &data, bdb->bi_db_opflags );
+                       rc = db->get(db, txn, &key, &data, bdb->bi_db_opflags | flags );
                }
 
                if( rc == DB_NOTFOUND ) {
@@ -459,7 +461,8 @@ int
 bdb_dn2id_children(
        BackendDB       *be,
        DB_TXN *txn,
-       struct berval *dn )
+       struct berval *dn, 
+       int flags )
 {
        int             rc;
        DBT             key, data;
@@ -489,7 +492,7 @@ bdb_dn2id_children(
        data.doff = 0;
        data.dlen = sizeof(id);
 
-       rc = db->get( db, txn, &key, &data, bdb->bi_db_opflags );
+       rc = db->get( db, txn, &key, &data, bdb->bi_db_opflags | flags );
        free( key.data );
 
 #ifdef NEW_LOGGING
index 0a841cab21e1c7099e740d2ef8e7886d067e8133..ef377fd5bd4f84365a29e6c113a5a2e9462bfe4b 100644 (file)
@@ -104,7 +104,7 @@ int bdb_id2entry_rw(
        }
 
        /* fetch it */
-       rc = db->get( db, tid, &key, &data, bdb->bi_db_opflags );
+       rc = db->get( db, tid, &key, &data, bdb->bi_db_opflags | ( rw ? DB_RMW : 0 ));
 
        if( rc != 0 ) {
                return rc;
index d205b60060b3b925e34da6ed69b678309afb62be..a6c80c3992387031425be0e5a378714532c7f43c 100644 (file)
@@ -356,7 +356,7 @@ retry:      /* transaction retry */
                ber_bvarray_free( refs );
                free( matched_dn );
 
-               return rc;
+               goto done;
        }
 
        if ( !manageDSAit && is_entry_referral( e ) ) {
index 30f345c7f072ed1193e2aaef51b0eb7c6f647a2c..439fcc2b5de47df2dca37c46af60cc96ffe7398d 100644 (file)
@@ -130,7 +130,7 @@ retry:      /* transaction retry */
        op->o_private = &opinfo;
 
        /* get entry */
-       rc = bdb_dn2entry_w( be, ltid, ndn, &e, &matched, 0, locker, &lock );
+       rc = bdb_dn2entry_w( be, ltid, ndn, &e, &matched, DB_RMW, locker, &lock );
 
        switch( rc ) {
        case 0:
@@ -520,7 +520,7 @@ retry:      /* transaction retry */
                new_ndn.bv_val, 0, 0 );
 #endif
 
-       rc = bdb_dn2id ( be, ltid, &new_ndn, &id );
+       rc = bdb_dn2id ( be, ltid, &new_ndn, &id, 0 );
        switch( rc ) {
        case DB_LOCK_DEADLOCK:
        case DB_LOCK_NOTGRANTED:
index 5278c23ba3baa83ca6ed59a29f9a81223b903eab..9cff5cb3fc42316eced86b2192872d310e0372f9 100644 (file)
@@ -87,7 +87,7 @@ retry:        /* transaction retry */
        opinfo.boi_err = 0;
        op->o_private = &opinfo;
 
-       rc = bdb_dn2id_children( be, ltid, &e->e_nname );
+       rc = bdb_dn2id_children( be, ltid, &e->e_nname, 0 );
        
        switch( rc ) {
        case DB_LOCK_DEADLOCK:
index f5c7af92fd366317f5c380ea9e4a9ece9c14d031..7adf2f0d4747d67e9a6a2768f36cd97a4d389ada 100644 (file)
@@ -69,14 +69,16 @@ int bdb_dn2id(
        BackendDB *be,
        DB_TXN *tid,
        struct berval *dn,
-       ID *id );
+       ID *id,
+       int flags );
 
 int bdb_dn2id_matched(
        BackendDB *be,
        DB_TXN *tid,
        struct berval *dn,
        ID *id,
-       ID *id2 );
+       ID *id2,
+       int flags );
 
 int bdb_dn2id_add(
        BackendDB *be,
@@ -93,7 +95,8 @@ int bdb_dn2id_delete(
 int bdb_dn2id_children(
        BackendDB *be,
        DB_TXN *tid,
-       struct berval *dn );
+       struct berval *dn,
+       int flags );
 
 int
 bdb_dn2idl(