]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
merge changes needed for samba4
authorAndrew Tridgell <tridge@samba.org>
Tue, 14 Aug 2007 23:03:58 +0000 (09:03 +1000)
committerAndrew Tridgell <tridge@samba.org>
Tue, 14 Aug 2007 23:03:58 +0000 (09:03 +1000)
(This used to be ctdb commit a7f80f78cd62401b3516da3640bf24d6362db872)

ctdb/client/ctdb_client.c
ctdb/include/ctdb.h

index d7d0247f6cf90e6218736e41d6195dc5ab7981c0..b569a69c8d8d3bcce5f241288140751a52b4ce3d 100644 (file)
@@ -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;
 }
 
index 6c25b7fa9d14b33edaed21fe2e2d452e128680a0..04339b066631ff53c29352af04498f640dcf1948 100644 (file)
@@ -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