[SCM] Samba Shared Repository - branch v3-2-test updated - release-3-2-0pre2-490-g7dcd0c1

Michael Adam obnox at samba.org
Thu Mar 27 17:18:16 GMT 2008


The branch, v3-2-test has been updated
       via  7dcd0c1e539df9ff1768a9c878b6687b9e1bfeac (commit)
       via  ab0aaed907fef233998ff0841d30eabef3263ee8 (commit)
       via  b6ceeaabae94b86fe79d6a60e497fb472ca23021 (commit)
       via  9925cc01a2a4739d6cde5991eb0d0b79ae13353b (commit)
       via  3bf9ab640e9a79157fcfee0b5d0cde5badc92755 (commit)
       via  b61b8ca4944f399216d8e67a48ea7d259258b432 (commit)
       via  729f7b9ff30e81537a7257daeaa1728c7ae96853 (commit)
       via  a77b5b91dd439b5965fef17f2b2ff98fefd77dbb (commit)
       via  093c3bced96c934419af69cc065a240368027dcf (commit)
       via  4e2be189e97f653b75bd88135a631ce0f42db267 (commit)
       via  9620696083473e3a98b46dd90b3b4aa287580940 (commit)
       via  74a070b8a24fea1009e557f711b76fc14e8961dc (commit)
       via  f05e889bc05a816aef5b9ce4f22267e977dade01 (commit)
      from  fed644372916a5e565e4f5352aab61b39a3a42a0 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit 7dcd0c1e539df9ff1768a9c878b6687b9e1bfeac
Author: Michael Adam <obnox at samba.org>
Date:   Thu Mar 27 18:01:43 2008 +0100

    regdb: use == 0 (instead of != -1) as indicator for success of dbwrap_trans_[delete|store]()
    
    Michael

commit ab0aaed907fef233998ff0841d30eabef3263ee8
Author: Michael Adam <obnox at samba.org>
Date:   Thu Mar 27 18:00:25 2008 +0100

    dbwrap: fix dbwrap_trans_[delete|store]() to stop when transaction_start() failed.
    
    Michael

commit b6ceeaabae94b86fe79d6a60e497fb472ca23021
Author: Michael Adam <obnox at samba.org>
Date:   Thu Mar 27 17:44:36 2008 +0100

    regdb: use != 0 instead of == -1 check for transaction_[commit|cancel]
    
    Michael

commit 9925cc01a2a4739d6cde5991eb0d0b79ae13353b
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 27 16:57:10 2008 +0100

    pdb_tdb: use db_open_trans()
    
    metze
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 3bf9ab640e9a79157fcfee0b5d0cde5badc92755
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 27 16:55:35 2008 +0100

    pdb_tdb: use db_sam->transaction_start(db_sam) != 0 consistent
    
    metze
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit b61b8ca4944f399216d8e67a48ea7d259258b432
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 27 16:57:30 2008 +0100

    passdb/secrets: use db_open_trans()
    
    metze
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 729f7b9ff30e81537a7257daeaa1728c7ae96853
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 20 14:26:46 2008 +0100

    passdb/secrets: it's enough to use traverse_read() in secrets_trusted_domains()
    
    metze
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit a77b5b91dd439b5965fef17f2b2ff98fefd77dbb
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 27 16:57:51 2008 +0100

    regdb: use db_open_trans()
    
    metze
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 093c3bced96c934419af69cc065a240368027dcf
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 27 16:56:38 2008 +0100

    regdb: use regdb->transaction_start(regdb) != 0 consistent
    
    metze
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 4e2be189e97f653b75bd88135a631ce0f42db267
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Mar 26 21:24:17 2008 +0100

    regdb: use dbwrap->fetch() instead of fetch_locked() for readonly access
    
    metze
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 9620696083473e3a98b46dd90b3b4aa287580940
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Mar 26 21:25:06 2008 +0100

    regdb: use dbwrap_trans_store_int32
    
    metze
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 74a070b8a24fea1009e557f711b76fc14e8961dc
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 27 16:08:21 2008 +0100

    dbwrap: add db_open_trans()
    
    This should be used when transactions are wanted.
    For now it's just a wrapper of db_open(), but this
    will change.
    
    metze
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit f05e889bc05a816aef5b9ce4f22267e977dade01
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 27 15:59:58 2008 +0100

    dbwrap: add dbwrap_trans_store_int32()
    
    metze
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 source/include/dbwrap.h          |    5 +++
 source/lib/dbwrap.c              |   15 +++++++++
 source/lib/dbwrap_util.c         |   17 +++++++++++
 source/passdb/pdb_tdb.c          |    4 +-
 source/passdb/secrets.c          |    5 ++-
 source/registry/reg_backend_db.c |   60 +++++++++++++++++++------------------
 6 files changed, 73 insertions(+), 33 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/include/dbwrap.h b/source/include/dbwrap.h
index 095719a..654c7a4 100644
--- a/source/include/dbwrap.h
+++ b/source/include/dbwrap.h
@@ -54,6 +54,11 @@ struct db_context *db_open(TALLOC_CTX *mem_ctx,
 			   int hash_size, int tdb_flags,
 			   int open_flags, mode_t mode);
 
+struct db_context *db_open_trans(TALLOC_CTX *mem_ctx,
+				 const char *name,
+				 int hash_size, int tdb_flags,
+				 int open_flags, mode_t mode);
+
 struct db_context *db_open_rbt(TALLOC_CTX *mem_ctx);
 
 struct db_context *db_open_tdb(TALLOC_CTX *mem_ctx,
diff --git a/source/lib/dbwrap.c b/source/lib/dbwrap.c
index 001424a..fd92463 100644
--- a/source/lib/dbwrap.c
+++ b/source/lib/dbwrap.c
@@ -42,6 +42,9 @@ static int dbwrap_fallback_fetch(struct db_context *db, TALLOC_CTX *mem_ctx,
 	return 0;
 }
 
+/**
+ * If you need transaction support use db_open_trans()
+ */
 struct db_context *db_open(TALLOC_CTX *mem_ctx,
 			   const char *name,
 			   int hash_size, int tdb_flags,
@@ -93,6 +96,18 @@ struct db_context *db_open(TALLOC_CTX *mem_ctx,
 	return result;
 }
 
+/**
+ * If you use this you can only modify with a transaction
+ */
+struct db_context *db_open_trans(TALLOC_CTX *mem_ctx,
+				 const char *name,
+				 int hash_size, int tdb_flags,
+				 int open_flags, mode_t mode)
+{
+	/* TODO: implement this differently */
+	return db_open(mem_ctx, name, hash_size, tdb_flags, open_flags, mode);
+}
+
 NTSTATUS dbwrap_delete_bystring(struct db_context *db, const char *key)
 {
 	struct db_record *rec;
diff --git a/source/lib/dbwrap_util.c b/source/lib/dbwrap_util.c
index 0bafbe6..1572f01 100644
--- a/source/lib/dbwrap_util.c
+++ b/source/lib/dbwrap_util.c
@@ -127,6 +127,7 @@ int dbwrap_trans_store(struct db_context *db, TDB_DATA key, TDB_DATA dbuf,
 	res = db->transaction_start(db);
 	if (res != 0) {
 		DEBUG(5, ("transaction_start failed\n"));
+		return res;
 	}
 
 	rec = db->fetch_locked(db, talloc_tos(), key);
@@ -166,6 +167,7 @@ int dbwrap_trans_delete(struct db_context *db, TDB_DATA key)
 	res = db->transaction_start(db);
 	if (res != 0) {
 		DEBUG(5, ("transaction_start failed\n"));
+		return res;
 	}
 
 	rec = db->fetch_locked(db, talloc_tos(), key);
@@ -195,3 +197,18 @@ int dbwrap_trans_delete(struct db_context *db, TDB_DATA key)
 	}
 	return -1;
 }
+
+int dbwrap_trans_store_int32(struct db_context *db, const char *keystr, int32_t v)
+{
+	int ret;
+	int32 v_store;
+
+	SIVAL(&v_store, 0, v);
+
+	ret = dbwrap_trans_store(db, string_term_tdb_data(keystr),
+				 make_tdb_data((const uint8 *)&v_store,
+						sizeof(v_store)),
+				 TDB_REPLACE);
+
+	return ret;
+}
diff --git a/source/passdb/pdb_tdb.c b/source/passdb/pdb_tdb.c
index 25aa6b4..b41a7cc 100644
--- a/source/passdb/pdb_tdb.c
+++ b/source/passdb/pdb_tdb.c
@@ -832,7 +832,7 @@ static bool tdbsam_open( const char *name )
 
 	/* Try to open tdb passwd.  Create a new one if necessary */
 
-	db_sam = db_open(NULL, name, 0, TDB_DEFAULT, O_CREAT|O_RDWR, 0600);
+	db_sam = db_open_trans(NULL, name, 0, TDB_DEFAULT, O_CREAT|O_RDWR, 0600);
 	if (db_sam == NULL) {
 		DEBUG(0, ("tdbsam_open: Failed to open/create TDB passwd "
 			  "[%s]\n", name));
@@ -1275,7 +1275,7 @@ static NTSTATUS tdbsam_rename_sam_account(struct pdb_methods *my_methods,
 		return NT_STATUS_ACCESS_DENIED;
 	}
 
-	if (db_sam->transaction_start(db_sam) == -1) {
+	if (db_sam->transaction_start(db_sam) != 0) {
 		DEBUG(0, ("Could not start transaction\n"));
 		TALLOC_FREE(new_acct);
 		return NT_STATUS_ACCESS_DENIED;
diff --git a/source/passdb/secrets.c b/source/passdb/secrets.c
index 1e90f61..06bbd96 100644
--- a/source/passdb/secrets.c
+++ b/source/passdb/secrets.c
@@ -64,7 +64,8 @@ bool secrets_init(void)
 		return false;
 	}
 
-	db_ctx = db_open(NULL, fname, 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
+	db_ctx = db_open_trans(NULL, fname, 0,
+			       TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
 
 	if (db_ctx == NULL) {
 		DEBUG(0,("Failed to open %s\n", fname));
@@ -986,7 +987,7 @@ NTSTATUS secrets_trusted_domains(TALLOC_CTX *mem_ctx, uint32 *num_domains,
 		return NT_STATUS_NO_MEMORY;
 	}
 
-	db_ctx->traverse(db_ctx, list_trusted_domain, (void *)&state);
+	db_ctx->traverse_read(db_ctx, list_trusted_domain, (void *)&state);
 
 	*num_domains = state.num_domains;
 	*domains = state.domains;
diff --git a/source/registry/reg_backend_db.c b/source/registry/reg_backend_db.c
index e0be8f3..ad17068 100644
--- a/source/registry/reg_backend_db.c
+++ b/source/registry/reg_backend_db.c
@@ -185,7 +185,7 @@ fail:
  */
 bool init_registry_key(const char *add_path)
 {
-	if (regdb->transaction_start(regdb) == -1) {
+	if (regdb->transaction_start(regdb) != 0) {
 		DEBUG(0, ("init_registry_key: transaction_start failed\n"));
 		return false;
 	}
@@ -194,7 +194,7 @@ bool init_registry_key(const char *add_path)
 		goto fail;
 	}
 
-	if (regdb->transaction_commit(regdb) == -1) {
+	if (regdb->transaction_commit(regdb) != 0) {
 		DEBUG(0, ("init_registry_key: Could not commit transaction\n"));
 		return false;
 	}
@@ -202,7 +202,7 @@ bool init_registry_key(const char *add_path)
 	return true;
 
 fail:
-	if (regdb->transaction_cancel(regdb) == -1) {
+	if (regdb->transaction_cancel(regdb) != 0) {
 		smb_panic("init_registry_key: transaction_cancel failed\n");
 	}
 
@@ -228,7 +228,7 @@ bool init_registry_data(void)
 	 * transaction behaviour.
 	 */
 
-	if (regdb->transaction_start(regdb) == -1) {
+	if (regdb->transaction_start(regdb) != 0) {
 		DEBUG(0, ("init_registry_data: tdb_transaction_start "
 			  "failed\n"));
 		return false;
@@ -294,7 +294,7 @@ bool init_registry_data(void)
 
 	TALLOC_FREE(frame);
 
-	if (regdb->transaction_commit(regdb) == -1) {
+	if (regdb->transaction_commit(regdb) != 0) {
 		DEBUG(0, ("init_registry_data: Could not commit "
 			  "transaction\n"));
 		return false;
@@ -306,7 +306,7 @@ bool init_registry_data(void)
 
 	TALLOC_FREE(frame);
 
-	if (regdb->transaction_cancel(regdb) == -1) {
+	if (regdb->transaction_cancel(regdb) != 0) {
 		smb_panic("init_registry_data: tdb_transaction_cancel "
 			  "failed\n");
 	}
@@ -330,11 +330,11 @@ bool regdb_init(void)
 		return true;
 	}
 
-	regdb = db_open(NULL, state_path("registry.tdb"), 0, REG_TDB_FLAGS,
-			O_RDWR, 0600);
+	regdb = db_open_trans(NULL, state_path("registry.tdb"), 0,
+			      REG_TDB_FLAGS, O_RDWR, 0600);
 	if (!regdb) {
-		regdb = db_open(NULL, state_path("registry.tdb"), 0,
-				REG_TDB_FLAGS, O_RDWR|O_CREAT, 0600);
+		regdb = db_open_trans(NULL, state_path("registry.tdb"), 0,
+				      REG_TDB_FLAGS, O_RDWR|O_CREAT, 0600);
 		if (!regdb) {
 			DEBUG(0,("regdb_init: Failed to open registry %s (%s)\n",
 				state_path("registry.tdb"), strerror(errno) ));
@@ -352,7 +352,7 @@ bool regdb_init(void)
 		/* any upgrade code here if needed */
 		DEBUG(10, ("regdb_init: got %s = %d != %d\n", vstring,
 			   vers_id, REGVER_V1));
-		if (dbwrap_store_int32(regdb, vstring, REGVER_V1) != 0) {
+		if (dbwrap_trans_store_int32(regdb, vstring, REGVER_V1) != 0) {
 			DEBUG(0, ("regdb_init: error storing %s = %d\n",
 				  vstring, REGVER_V1));
 			return false;
@@ -381,7 +381,8 @@ WERROR regdb_open( void )
 	
 	become_root();
 
-	regdb = db_open(NULL, state_path("registry.tdb"), 0, REG_TDB_FLAGS, O_RDWR, 0600);
+	regdb = db_open_trans(NULL, state_path("registry.tdb"), 0,
+			      REG_TDB_FLAGS, O_RDWR, 0600);
 	if ( !regdb ) {
 		result = ntstatus_to_werror( map_nt_error_from_unix( errno ) );
 		DEBUG(0,("regdb_open: Failed to open %s! (%s)\n", 
@@ -552,7 +553,7 @@ bool regdb_store_keys(const char *key, REGSUBKEY_CTR *ctr)
 
 	TALLOC_FREE(old_subkeys);
 
-	if (regdb->transaction_start(regdb) == -1) {
+	if (regdb->transaction_start(regdb) != 0) {
 		DEBUG(0, ("regdb_store_keys: transaction_start failed\n"));
 		goto fail;
 	}
@@ -670,7 +671,7 @@ bool regdb_store_keys(const char *key, REGSUBKEY_CTR *ctr)
 		TALLOC_FREE(path);
 	}
 
-	if (regdb->transaction_commit(regdb) == -1) {
+	if (regdb->transaction_commit(regdb) != 0) {
 		DEBUG(0, ("regdb_store_keys: Could not commit transaction\n"));
 		goto fail;
 	}
@@ -679,7 +680,7 @@ bool regdb_store_keys(const char *key, REGSUBKEY_CTR *ctr)
 	return true;
 
 cancel:
-	if (regdb->transaction_cancel(regdb) == -1) {
+	if (regdb->transaction_cancel(regdb) != 0) {
 		smb_panic("regdb_store_keys: transaction_cancel failed\n");
 	}
 
@@ -705,7 +706,7 @@ int regdb_fetch_keys(const char *key, REGSUBKEY_CTR *ctr)
 	fstring subkeyname;
 	int ret = -1;
 	TALLOC_CTX *frame = talloc_stackframe();
-	struct db_record *rec;
+	TDB_DATA value;
 
 	DEBUG(11,("regdb_fetch_keys: Enter key => [%s]\n", key ? key : "NULL"));
 
@@ -721,16 +722,16 @@ int regdb_fetch_keys(const char *key, REGSUBKEY_CTR *ctr)
 	}
 	strupper_m(path);
 
-	rec = regdb->fetch_locked(regdb, frame, string_term_tdb_data(path));
-	if (rec == NULL) {
+	ret = regdb->fetch(regdb, frame, string_term_tdb_data(path), &value);
+	if (ret != 0) {
 		ret = 0;
 		goto fail;
 	}
 
 	ctr->seqnum = regdb_get_seqnum();
 
-	buf = rec->value.dptr;
-	buflen = rec->value.dsize;
+	buf = value.dptr;
+	buflen = value.dsize;
 
 	if ( !buf ) {
 		DEBUG(5,("regdb_fetch_keys: tdb lookup failed to locate key [%s]\n", key));
@@ -840,8 +841,8 @@ int regdb_fetch_values( const char* key, REGVAL_CTR *values )
 {
 	char *keystr = NULL;
 	TALLOC_CTX *ctx = talloc_stackframe();
-	struct db_record *rec;
 	int ret = 0;
+	TDB_DATA value;
 
 	DEBUG(10,("regdb_fetch_values: Looking for value of key [%s] \n", key));
 
@@ -854,19 +855,20 @@ int regdb_fetch_values( const char* key, REGVAL_CTR *values )
 		goto done;
 	}
 
-	rec = regdb->fetch_locked(regdb, ctx, string_term_tdb_data(keystr));
-	if (rec == NULL) {
+	ret = regdb->fetch(regdb, ctx, string_term_tdb_data(keystr), &value);
+	if (ret != 0) {
+		ret = 0;
 		goto done;
 	}
 
 	values->seqnum = regdb_get_seqnum();
 
-	if (!rec->value.dptr) {
+	if (!value.dptr) {
 		/* all keys have zero values by default */
 		goto done;
 	}
 
-	regdb_unpack_values(values, rec->value.dptr, rec->value.dsize);
+	regdb_unpack_values(values, value.dptr, value.dsize);
 	ret = regval_ctr_numvals(values);
 
 done:
@@ -984,10 +986,10 @@ static WERROR regdb_set_secdesc(const char *key,
 		/* assuming a delete */
 		tdb_ret = dbwrap_trans_delete(regdb,
 					      string_term_tdb_data(tdbkey));
-		if (tdb_ret == -1) {
-			err = ntstatus_to_werror(map_nt_error_from_unix(errno));
-		} else {
+		if (tdb_ret == 0) {
 			err = WERR_OK;
+		} else {
+			err = ntstatus_to_werror(map_nt_error_from_unix(errno));
 		}
 		goto done;
 	}
@@ -1001,7 +1003,7 @@ static WERROR regdb_set_secdesc(const char *key,
 
 	tdb_ret = dbwrap_trans_store(regdb, string_term_tdb_data(tdbkey),
 				     tdbdata, 0);
-	if (tdb_ret == -1) {
+	if (tdb_ret != 0) {
 		err = ntstatus_to_werror(map_nt_error_from_unix(errno));
 		goto done;
 	}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list