diff options
author | Ronnie sahlberg <ronniesahlberg@gmail.com> | 2007-04-17 12:36:31 +1000 |
---|---|---|
committer | Ronnie sahlberg <ronniesahlberg@gmail.com> | 2007-04-17 12:36:31 +1000 |
commit | 11b5345afc6adeb5523fa989f7e783fd5febc2c8 (patch) | |
tree | 1c1eec12411a4040c5d21e8da598076d51437ef9 /ctdb | |
parent | e5fff3d611c45452d88013dab112348261c92078 (diff) | |
download | samba-11b5345afc6adeb5523fa989f7e783fd5febc2c8.tar.gz samba-11b5345afc6adeb5523fa989f7e783fd5febc2c8.tar.xz samba-11b5345afc6adeb5523fa989f7e783fd5febc2c8.zip |
finalize fetch lock changes to get rid of the record handle
(This used to be ctdb commit 36c1e98a5533214d5507699dc5d8bdec35cb28c2)
Diffstat (limited to 'ctdb')
-rw-r--r-- | ctdb/common/ctdb_call.c | 6 | ||||
-rw-r--r-- | ctdb/include/ctdb.h | 2 | ||||
-rw-r--r-- | ctdb/include/ctdb_private.h | 14 | ||||
-rw-r--r-- | ctdb/tests/ctdb_fetch1.c | 34 |
4 files changed, 39 insertions, 17 deletions
diff --git a/ctdb/common/ctdb_call.c b/ctdb/common/ctdb_call.c index 44041033503..98bb780222c 100644 --- a/ctdb/common/ctdb_call.c +++ b/ctdb/common/ctdb_call.c @@ -744,7 +744,7 @@ int ctdb_call(struct ctdb_db_context *ctdb_db, struct ctdb_call *call) -struct ctdb_record_handle *ctdb_fetch_lock(struct ctdb_db_context *ctdb_db, TALLOC_CTX *mem_ctx, +int ctdb_fetch_lock(struct ctdb_db_context *ctdb_db, TALLOC_CTX *mem_ctx, TDB_DATA key, TDB_DATA *data) { struct ctdb_call call; @@ -775,10 +775,10 @@ struct ctdb_record_handle *ctdb_fetch_lock(struct ctdb_db_context *ctdb_db, TALL ret = ctdb_call_recv(state, &call); if (ret != 0) { talloc_free(rec); - return NULL; + return -6; } - return rec; + return 0; } diff --git a/ctdb/include/ctdb.h b/ctdb/include/ctdb.h index 8791abe2c16..d6dcdd3c4f8 100644 --- a/ctdb/include/ctdb.h +++ b/ctdb/include/ctdb.h @@ -177,7 +177,7 @@ int ctdb_send_message(struct ctdb_context *ctdb, uint32_t vnn, dmaster for the record to be moved to the local node. */ -struct ctdb_record_handle *ctdb_fetch_lock(struct ctdb_db_context *ctdb_db, TALLOC_CTX *mem_ctx, TDB_DATA key, TDB_DATA *data); +int ctdb_fetch_lock(struct ctdb_db_context *ctdb_db, TALLOC_CTX *mem_ctx, TDB_DATA key, TDB_DATA *data); /* do a fetch lock from a client to the local daemon diff --git a/ctdb/include/ctdb_private.h b/ctdb/include/ctdb_private.h index e6b9c89b248..a11ebf5ad4c 100644 --- a/ctdb/include/ctdb_private.h +++ b/ctdb/include/ctdb_private.h @@ -68,12 +68,6 @@ struct ctdb_node { uint32_t vnn; }; -struct ctdb_record_handle { - struct ctdb_db_context *ctdb_db; - TDB_DATA key; - TDB_DATA *data; -}; - /* transport specific methods */ @@ -200,6 +194,14 @@ struct ctdb_call_state { }; +/* used for fetch_lock */ +struct ctdb_record_handle { + struct ctdb_db_context *ctdb_db; + TDB_DATA key; + TDB_DATA *data; +}; + + /* operation IDs */ diff --git a/ctdb/tests/ctdb_fetch1.c b/ctdb/tests/ctdb_fetch1.c index e81606930d0..afae8c53cf1 100644 --- a/ctdb/tests/ctdb_fetch1.c +++ b/ctdb/tests/ctdb_fetch1.c @@ -45,7 +45,6 @@ static void child_handler(struct ctdb_context *ctdb, uint32_t srvid, void test1(struct ctdb_db_context *ctdb_db) { - struct ctdb_record_handle *rh; TDB_DATA key, data, data2, store_data; int ret; @@ -55,13 +54,26 @@ void test1(struct ctdb_db_context *ctdb_db) printf("Test1: write and verify we can read it back: "); key.dptr = discard_const("Record"); key.dsize = strlen((const char *)key.dptr)+1; - rh = ctdb_fetch_lock(ctdb_db, ctdb_db, key, &data); + ret = ctdb_client_fetch_lock(ctdb_db, ctdb_db, key, &data); + if (ret!=0) { + printf("test1: ctdb_client_fetch_lock() failed\n"); + exit(1); + } store_data.dptr = discard_const("data to store"); store_data.dsize = strlen((const char *)store_data.dptr)+1; - ret = ctdb_client_store_unlock(rh, store_data); + ret = ctdb_client_store_unlock(ctdb_db, key, store_data); + if (ret!=0) { + printf("test1: ctdb_client_store_unlock() failed\n"); + exit(1); + } + + ret = ctdb_client_fetch_lock(ctdb_db, ctdb_db, key, &data2); + if (ret!=0) { + printf("test1: ctdb_client_fetch_lock() failed\n"); + exit(1); + } - rh = ctdb_fetch_lock(ctdb_db, ctdb_db, key, &data2); /* hopefully data2 will now contain the record written above */ if (!strcmp("data to store", (const char *)data2.dptr)) { printf("SUCCESS\n"); @@ -71,14 +83,18 @@ void test1(struct ctdb_db_context *ctdb_db) } /* just write it back to unlock it */ - ret = ctdb_client_store_unlock(rh, store_data); + ret = ctdb_client_store_unlock(ctdb_db, key, store_data); + if (ret!=0) { + printf("test1: ctdb_client_store_unlock() failed\n"); + exit(1); + } } void child(int srvid, struct event_context *ev, struct ctdb_context *ctdb, struct ctdb_db_context *ctdb_db) { TDB_DATA data; - struct ctdb_record_handle *rh; TDB_DATA key, data2; + int ret; data.dptr=discard_const("dummy message"); data.dsize=strlen((const char *)data.dptr)+1; @@ -94,7 +110,11 @@ void child(int srvid, struct event_context *ev, struct ctdb_context *ctdb, struc /* fetch and lock the record */ key.dptr = discard_const("Record"); key.dsize = strlen((const char *)key.dptr)+1; - rh = ctdb_fetch_lock(ctdb_db, ctdb_db, key, &data2); + ret = ctdb_client_fetch_lock(ctdb_db, ctdb_db, key, &data2); + if (ret!=0) { + printf("client: ctdb_client_fetch_lock() failed\n"); + exit(1); + } ctdb_send_message(ctdb, ctdb_get_vnn(ctdb), PARENT_SRVID, data); |