From: Andrew Tridgell Date: Tue, 14 Aug 2007 23:03:58 +0000 (+1000) Subject: merge changes needed for samba4 X-Git-Tag: tevent-0.9.20~348^2~2443 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f03defff70d51e7b67b1141ab337ae8a14ce5ae6;p=thirdparty%2Fsamba.git merge changes needed for samba4 (This used to be ctdb commit a7f80f78cd62401b3516da3640bf24d6362db872) --- diff --git a/ctdb/client/ctdb_client.c b/ctdb/client/ctdb_client.c index d7d0247f6cf..b569a69c8d8 100644 --- a/ctdb/client/ctdb_client.c +++ b/ctdb/client/ctdb_client.c @@ -637,6 +637,30 @@ int ctdb_record_store(struct ctdb_record_handle *h, TDB_DATA data) return ctdb_ltdb_store(h->ctdb_db, h->key, &h->header, data); } +/* + non-locking fetch of a record + */ +int ctdb_fetch(struct ctdb_db_context *ctdb_db, TALLOC_CTX *mem_ctx, + TDB_DATA key, TDB_DATA *data) +{ + struct ctdb_call call; + int ret; + + call.call_id = CTDB_FETCH_FUNC; + call.call_data.dptr = NULL; + call.call_data.dsize = 0; + + ret = ctdb_call(ctdb_db, &call); + + if (ret == 0) { + *data = call.reply_data; + talloc_steal(mem_ctx, data->dptr); + } + + return ret; +} + + struct ctdb_client_control_state { struct ctdb_context *ctdb; uint32_t reqid; @@ -1432,6 +1456,11 @@ struct ctdb_db_context *ctdb_attach(struct ctdb_context *ctdb, const char *name) int ret; int32_t res; + ctdb_db = ctdb_db_handle(ctdb, name); + if (ctdb_db) { + return ctdb_db; + } + ctdb_db = talloc_zero(ctdb, struct ctdb_db_context); CTDB_NO_MEMORY_NULL(ctdb, ctdb_db); @@ -2162,6 +2191,8 @@ struct ctdb_context *ctdb_init(struct event_context *ev) ctdb->idr = idr_init(ctdb); CTDB_NO_MEMORY_NULL(ctdb, ctdb->idr); + ctdb_set_socketname(ctdb, CTDB_PATH); + return ctdb; } diff --git a/ctdb/include/ctdb.h b/ctdb/include/ctdb.h index 6c25b7fa9d1..04339b06663 100644 --- a/ctdb/include/ctdb.h +++ b/ctdb/include/ctdb.h @@ -214,6 +214,9 @@ struct ctdb_record_handle *ctdb_fetch_lock(struct ctdb_db_context *ctdb_db, TALL int ctdb_record_store(struct ctdb_record_handle *h, TDB_DATA data); +int ctdb_fetch(struct ctdb_db_context *ctdb_db, TALLOC_CTX *mem_ctx, + TDB_DATA key, TDB_DATA *data); + int ctdb_register_message_handler(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx, uint64_t srvid, @@ -367,4 +370,6 @@ int ctdb_ctrl_modflags(struct ctdb_context *ctdb, uint32_t destnode, uint32_t set, uint32_t clear); +int ctdb_socket_connect(struct ctdb_context *ctdb); + #endif