The branch, master has been updated
       via  404acae dbwrap_ctdb: Remove get_my_vnn dependency
       via  1dcdd86 dbwrap_ctdb: Fix some 32-bit hickups
       via  3bd368b ctdbd_conn: Remove messages.h dependency
       via  46be182 dbwrap: Add "msg_ctx" to db_open_ctdb
       via  3fe3226 dbwrap_ctdb: Pass in ctdbd_connection
       via  0a367f5 dbwrap_ctdb: Add "conn" to db_ctdb_ctx
       via  e3fcf90 dbwrap_ctdb: Align loop index with terminator
       via  069d79b lib: Move async message handling out of ctdbd_conn
       via  33c8861 ctdbd_conn: Expose ctdb socket readability handler
       via  120f867 ctdbd_conn: "sockname" is not needed anymore
       via  0b8896d ctdbd_conn: Simplify two DEBUGs
       via  a1309d5 ctdbd_conn: remove ctdb_processes_exist
      from  b3b2fee python/tests/dns_forwarder: fix for python 2.6

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 404acae05c9fa8a537e3dbf6480caa266940ec0a
Author: Volker Lendecke <v...@samba.org>
Date:   Mon Apr 11 16:31:25 2016 +0200

    dbwrap_ctdb: Remove get_my_vnn dependency
    
    Signed-off-by: Volker Lendecke <v...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>
    
    Autobuild-User(master): Ralph Böhme <s...@samba.org>
    Autobuild-Date(master): Tue May 17 16:54:36 CEST 2016 on sn-devel-144

commit 1dcdd862e58bb23927a9778166c1d91db513532a
Author: Volker Lendecke <v...@samba.org>
Date:   Mon Apr 11 16:07:12 2016 +0200

    dbwrap_ctdb: Fix some 32-bit hickups
    
    Signed-off-by: Volker Lendecke <v...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit 3bd368b12dc5b4bd6500a4bb49f2d9d536580d59
Author: Volker Lendecke <v...@samba.org>
Date:   Sun Apr 24 17:39:44 2016 +0200

    ctdbd_conn: Remove messages.h dependency
    
    This removes a circular dependency
    
    Signed-off-by: Volker Lendecke <v...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit 46be182ccb931d689f85b0a5ef6e25cb886b59ce
Author: Volker Lendecke <v...@samba.org>
Date:   Sun Apr 24 17:37:07 2016 +0200

    dbwrap: Add "msg_ctx" to db_open_ctdb
    
    Another step towards making ctdbd_conn.c independent of messages.c. No call 
to
    ctdb_conn_msg_ctx() anymore
    
    Signed-off-by: Volker Lendecke <v...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit 3fe3226daa8488e0fa787c40359c3401b6f05fc0
Author: Volker Lendecke <v...@samba.org>
Date:   Mon Apr 11 16:20:32 2016 +0200

    dbwrap_ctdb: Pass in ctdbd_connection
    
    This removes one circular dependency of dbwrap_ctdb to messages.c: No call 
to
    messaging_ctdbd_connection() anymore from dbwrap_ctdb.c.
    
    Signed-off-by: Volker Lendecke <v...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit 0a367f5fd4b0fa1971052bc6c88ab511b03716e2
Author: Volker Lendecke <v...@samba.org>
Date:   Mon Apr 11 16:01:07 2016 +0200

    dbwrap_ctdb: Add "conn" to db_ctdb_ctx
    
    This minimizes the use of messaging_ctdbd_connection() to
    db_open_ctx(). Next step will move this into db_open().
    
    Signed-off-by: Volker Lendecke <v...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit e3fcf90f1553ca0d27d42225d1924664c4d8901e
Author: Volker Lendecke <v...@samba.org>
Date:   Mon Apr 11 15:45:49 2016 +0200

    dbwrap_ctdb: Align loop index with terminator
    
    Signed-off-by: Volker Lendecke <v...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit 069d79bbd9ad3f37e9b1a89372301179f726300d
Author: Volker Lendecke <v...@samba.org>
Date:   Sun Apr 24 17:37:33 2016 +0200

    lib: Move async message handling out of ctdbd_conn
    
    messages_ctdbd.c is the code that is genuinely interested in
    async messages from ctdb, so let it take care of them.
    
    Signed-off-by: Volker Lendecke <v...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit 33c8861fc5ed828fe8e1d5b752f09a0c0ea4cc55
Author: Volker Lendecke <v...@samba.org>
Date:   Sun Apr 24 17:36:00 2016 +0200

    ctdbd_conn: Expose ctdb socket readability handler
    
    This will obsolete ctdbd_register_msg_ctx soon
    
    Signed-off-by: Volker Lendecke <v...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit 120f86755abd4919ae7a27de6071878d72fe279b
Author: Volker Lendecke <v...@samba.org>
Date:   Tue Apr 19 21:40:40 2016 +0200

    ctdbd_conn: "sockname" is not needed anymore
    
    Previously it was used in ctdb_traverse(), but with ff72a8a this is no 
longer
    the case
    
    Signed-off-by: Volker Lendecke <v...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit 0b8896d51e1db5543048d2ccd02d45c7b17ab12c
Author: Volker Lendecke <v...@samba.org>
Date:   Tue Apr 19 16:02:49 2016 +0200

    ctdbd_conn: Simplify two DEBUGs
    
    msg->hdr.length is a uint32 and we have PRIu32
    
    Signed-off-by: Volker Lendecke <v...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

commit a1309d53215c83688bea14c9c4b39e547c186ba4
Author: Volker Lendecke <v...@samba.org>
Date:   Mon Apr 11 17:15:29 2016 +0200

    ctdbd_conn: remove ctdb_processes_exist
    
    The singular call was the only user. Remove the complex plural one. We can
    always dig it up from git history if we need it.
    
    Signed-off-by: Volker Lendecke <v...@samba.org>
    Reviewed-by: Ralph Boehme <s...@samba.org>

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

Summary of changes:
 source3/include/ctdbd_conn.h       |   9 +-
 source3/lib/ctdb_dummy.c           |   9 +-
 source3/lib/ctdbd_conn.c           | 194 +++----------------------------------
 source3/lib/dbwrap/dbwrap_ctdb.c   |  68 ++++++-------
 source3/lib/dbwrap/dbwrap_ctdb.h   |   3 +
 source3/lib/dbwrap/dbwrap_open.c   |  15 ++-
 source3/lib/messages_ctdbd.c       |  38 +++++---
 source3/torture/test_dbwrap_ctdb.c |  15 ++-
 8 files changed, 108 insertions(+), 243 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/include/ctdbd_conn.h b/source3/include/ctdbd_conn.h
index c91f700..11e71ba 100644
--- a/source3/include/ctdbd_conn.h
+++ b/source3/include/ctdbd_conn.h
@@ -36,12 +36,8 @@ int ctdbd_init_connection(TALLOC_CTX *mem_ctx,
 
 uint32_t ctdbd_vnn(const struct ctdbd_connection *conn);
 
-int ctdbd_register_msg_ctx(struct ctdbd_connection *conn,
-                          struct messaging_context *msg_ctx,
-                          struct tevent_context *ev);
-struct messaging_context *ctdb_conn_msg_ctx(struct ctdbd_connection *conn);
-
 int ctdbd_conn_get_fd(struct ctdbd_connection *conn);
+void ctdbd_socket_readable(struct ctdbd_connection *conn);
 
 int ctdbd_messaging_send_iov(struct ctdbd_connection *conn,
                             uint32_t dst_vnn, uint64_t dst_srvid,
@@ -49,9 +45,6 @@ int ctdbd_messaging_send_iov(struct ctdbd_connection *conn,
 
 bool ctdbd_process_exists(struct ctdbd_connection *conn, uint32_t vnn,
                          pid_t pid);
-bool ctdb_processes_exist(struct ctdbd_connection *conn,
-                         const struct server_id *pids, int num_pids,
-                         bool *results);
 
 char *ctdbd_dbpath(struct ctdbd_connection *conn,
                   TALLOC_CTX *mem_ctx, uint32_t db_id);
diff --git a/source3/lib/ctdb_dummy.c b/source3/lib/ctdb_dummy.c
index 5162242..ec0bcc4 100644
--- a/source3/lib/ctdb_dummy.c
+++ b/source3/lib/ctdb_dummy.c
@@ -58,19 +58,14 @@ int ctdbd_register_ips(struct ctdbd_connection *conn,
        return ENOSYS;
 }
 
-bool ctdb_processes_exist(struct ctdbd_connection *conn,
-                         const struct server_id *pids, int num_pids,
-                         bool *results)
-{
-       return false;
-}
-
 bool ctdbd_process_exists(struct ctdbd_connection *conn, uint32_t vnn, pid_t 
pid)
 {
        return false;
 }
 
 struct db_context *db_open_ctdb(TALLOC_CTX *mem_ctx,
+                               struct messaging_context *msg_ctx,
+                               struct ctdbd_connection *conn,
                                const char *name,
                                int hash_size, int tdb_flags,
                                int open_flags, mode_t mode,
diff --git a/source3/lib/ctdbd_conn.c b/source3/lib/ctdbd_conn.c
index 9ea029a..6cb6814 100644
--- a/source3/lib/ctdbd_conn.c
+++ b/source3/lib/ctdbd_conn.c
@@ -31,8 +31,6 @@
 #include "lib/util/genrand.h"
 #include "lib/util/fault.h"
 
-#include "messages.h"
-
 /* paths to these include files come from --with-ctdb= in configure */
 
 #include "ctdb_private.h"
@@ -47,8 +45,6 @@ struct ctdbd_srvid_cb {
 };
 
 struct ctdbd_connection {
-       const char *sockname;   /* Needed in ctdbd_traverse */
-       struct messaging_context *msg_ctx;
        uint32_t reqid;
        uint32_t our_vnn;
        uint64_t rand_srvid;
@@ -142,20 +138,19 @@ int register_with_ctdbd(struct ctdbd_connection *conn, 
uint64_t srvid,
 static int ctdbd_msg_call_back(struct ctdbd_connection *conn,
                               struct ctdb_req_message_old *msg)
 {
-       size_t msg_len;
+       uint32_t msg_len;
        size_t i, num_callbacks;
 
        msg_len = msg->hdr.length;
        if (msg_len < offsetof(struct ctdb_req_message_old, data)) {
-               DEBUG(10, ("%s: len %u too small\n", __func__,
-                          (unsigned)msg_len));
+               DBG_DEBUG("len %"PRIu32" too small\n", msg_len);
                return 0;
        }
        msg_len -= offsetof(struct ctdb_req_message_old, data);
 
        if (msg_len < msg->datalen) {
-               DEBUG(10, ("%s: msg_len=%u < msg->datalen=%u\n", __func__,
-                          (unsigned)msg_len, (unsigned)msg->datalen));
+               DBG_DEBUG("msg_len=%"PRIu32" < msg->datalen=%"PRIu32"\n",
+                         msg_len, msg->datalen);
                return 0;
        }
 
@@ -378,14 +373,6 @@ static int ctdb_read_req(struct ctdbd_connection *conn, 
uint32_t reqid,
        if (hdr->operation == CTDB_REQ_MESSAGE) {
                struct ctdb_req_message_old *msg = (struct ctdb_req_message_old 
*)hdr;
 
-               if (conn->msg_ctx == NULL) {
-                       DEBUG(1, ("Got a message without having a msg ctx, "
-                                 "dropping msg %llu\n",
-                                 (long long unsigned)msg->srvid));
-                       TALLOC_FREE(hdr);
-                       goto next_pkt;
-               }
-
                ret = ctdbd_msg_call_back(conn, msg);
                if (ret != 0) {
                        TALLOC_FREE(hdr);
@@ -434,20 +421,13 @@ int ctdbd_init_connection(TALLOC_CTX *mem_ctx,
                return ENOMEM;
        }
 
-       conn->sockname = talloc_strdup(conn, sockname);
-       if (conn->sockname == NULL) {
-               DBG_ERR("talloc failed\n");
-               ret = ENOMEM;
-               goto fail;
-       }
-
        conn->timeout = timeout;
 
        if (conn->timeout == 0) {
                conn->timeout = -1;
        }
 
-       ret = ctdbd_connect(conn->sockname, &conn->fd);
+       ret = ctdbd_connect(sockname, &conn->fd);
        if (ret != 0) {
                DEBUG(1, ("ctdbd_connect failed: %s\n", strerror(ret)));
                goto fail;
@@ -486,11 +466,6 @@ int ctdbd_init_connection(TALLOC_CTX *mem_ctx,
        return ret;
 }
 
-struct messaging_context *ctdb_conn_msg_ctx(struct ctdbd_connection *conn)
-{
-       return conn->msg_ctx;
-}
-
 int ctdbd_conn_get_fd(struct ctdbd_connection *conn)
 {
        return conn->fd;
@@ -517,17 +492,8 @@ static int ctdb_handle_message(struct ctdbd_connection 
*conn,
        return 0;
 }
 
-/*
- * The ctdbd socket is readable asynchronuously
- */
-
-static void ctdbd_socket_handler(struct tevent_context *event_ctx,
-                                struct tevent_fd *event,
-                                uint16_t flags,
-                                void *private_data)
+void ctdbd_socket_readable(struct ctdbd_connection *conn)
 {
-       struct ctdbd_connection *conn = talloc_get_type_abort(
-               private_data, struct ctdbd_connection);
        struct ctdb_req_header *hdr = NULL;
        int ret;
 
@@ -547,29 +513,6 @@ static void ctdbd_socket_handler(struct tevent_context 
*event_ctx,
        }
 }
 
-/*
- * Prepare a ctdbd connection to receive messages
- */
-
-int ctdbd_register_msg_ctx(struct ctdbd_connection *conn,
-                          struct messaging_context *msg_ctx,
-                          struct tevent_context *ev)
-{
-       SMB_ASSERT(conn->msg_ctx == NULL);
-       SMB_ASSERT(conn->fde == NULL);
-
-       conn->fde = tevent_add_fd(ev, conn, conn->fd, TEVENT_FD_READ,
-                                 ctdbd_socket_handler, conn);
-       if (conn->fde == NULL) {
-               DEBUG(0, ("event_add_fd failed\n"));
-               return ENOMEM;
-       }
-
-       conn->msg_ctx = msg_ctx;
-
-       return 0;
-}
-
 int ctdbd_messaging_send_iov(struct ctdbd_connection *conn,
                             uint32_t dst_vnn, uint64_t dst_srvid,
                             const struct iovec *iov, int iovlen)
@@ -692,126 +635,17 @@ static int ctdbd_control(struct ctdbd_connection *conn,
  */
 bool ctdbd_process_exists(struct ctdbd_connection *conn, uint32_t vnn, pid_t 
pid)
 {
-       struct server_id id;
-       bool result;
-
-       id.pid = pid;
-       id.vnn = vnn;
+       int32_t cstatus = 0;
+       int ret;
 
-       if (!ctdb_processes_exist(conn, &id, 1, &result)) {
-               DEBUG(10, ("ctdb_processes_exist failed\n"));
+       ret = ctdbd_control(conn, vnn, CTDB_CONTROL_PROCESS_EXISTS, 0, 0,
+                           (TDB_DATA) { .dptr = (uint8_t *)&pid,
+                                        .dsize = sizeof(pid) },
+                           NULL, NULL, &cstatus);
+       if (ret != 0) {
                return false;
        }
-       return result;
-}
-
-bool ctdb_processes_exist(struct ctdbd_connection *conn,
-                         const struct server_id *pids, int num_pids,
-                         bool *results)
-{
-       TALLOC_CTX *frame = talloc_stackframe();
-       int i, num_received;
-       uint32_t *reqids;
-       bool result = false;
-
-       reqids = talloc_array(talloc_tos(), uint32_t, num_pids);
-       if (reqids == NULL) {
-               goto fail;
-       }
-
-       for (i=0; i<num_pids; i++) {
-               struct ctdb_req_control_old req;
-               pid_t pid;
-               struct iovec iov[2];
-               ssize_t nwritten;
-
-               results[i] = false;
-               reqids[i] = ctdbd_next_reqid(conn);
-
-               ZERO_STRUCT(req);
-
-               /*
-                * pids[i].pid is uint64_t, scale down to pid_t which
-                * is the wire protocol towards ctdb.
-                */
-               pid = pids[i].pid;
-
-               DEBUG(10, ("Requesting PID %d/%d, reqid=%d\n",
-                          (int)pids[i].vnn, (int)pid,
-                          (int)reqids[i]));
-
-               req.hdr.length = offsetof(struct ctdb_req_control_old, data);
-               req.hdr.length += sizeof(pid);
-               req.hdr.ctdb_magic   = CTDB_MAGIC;
-               req.hdr.ctdb_version = CTDB_PROTOCOL;
-               req.hdr.operation    = CTDB_REQ_CONTROL;
-               req.hdr.reqid        = reqids[i];
-               req.hdr.destnode     = pids[i].vnn;
-               req.opcode           = CTDB_CONTROL_PROCESS_EXISTS;
-               req.srvid            = 0;
-               req.datalen          = sizeof(pid);
-               req.flags            = 0;
-
-               DEBUG(10, ("ctdbd_control: Sending ctdb packet\n"));
-               ctdb_packet_dump(&req.hdr);
-
-               iov[0].iov_base = &req;
-               iov[0].iov_len = offsetof(struct ctdb_req_control_old, data);
-               iov[1].iov_base = &pid;
-               iov[1].iov_len = sizeof(pid);
-
-               nwritten = write_data_iov(conn->fd, iov, ARRAY_SIZE(iov));
-               if (nwritten == -1) {
-                       DEBUG(10, ("write_data_iov failed: %s\n",
-                                  strerror(errno)));
-                       goto fail;
-               }
-       }
-
-       num_received = 0;
-
-       while (num_received < num_pids) {
-               struct ctdb_req_header *hdr;
-               struct ctdb_reply_control_old *reply;
-               uint32_t reqid;
-               int ret;
-
-               ret = ctdb_read_req(conn, 0, talloc_tos(), &hdr);
-               if (ret != 0) {
-                       DEBUG(10, ("ctdb_read_req failed: %s\n",
-                                  strerror(ret)));
-                       goto fail;
-               }
-
-               if (hdr->operation != CTDB_REPLY_CONTROL) {
-                       DEBUG(10, ("Received invalid reply\n"));
-                       goto fail;
-               }
-               reply = (struct ctdb_reply_control_old *)hdr;
-
-               reqid = reply->hdr.reqid;
-
-               DEBUG(10, ("Received reqid %d\n", (int)reqid));
-
-               for (i=0; i<num_pids; i++) {
-                       if (reqid == reqids[i]) {
-                               break;
-                       }
-               }
-               if (i == num_pids) {
-                       DEBUG(10, ("Received unknown record number %u\n",
-                                  (unsigned)reqid));
-                       goto fail;
-               }
-               results[i] = ((reply->status) == 0);
-               TALLOC_FREE(reply);
-               num_received += 1;
-       }
-
-       result = true;
-fail:
-       TALLOC_FREE(frame);
-       return result;
+       return (cstatus == 0);
 }
 
 /*
diff --git a/source3/lib/dbwrap/dbwrap_ctdb.c b/source3/lib/dbwrap/dbwrap_ctdb.c
index 532240d..df5a34f 100644
--- a/source3/lib/dbwrap/dbwrap_ctdb.c
+++ b/source3/lib/dbwrap/dbwrap_ctdb.c
@@ -49,6 +49,7 @@ struct db_ctdb_transaction_handle {
 
 struct db_ctdb_ctx {
        struct db_context *db;
+       struct ctdbd_connection *conn;
        struct tdb_wrap *wtdb;
        uint32_t db_id;
        struct db_ctdb_transaction_handle *transaction;
@@ -357,7 +358,7 @@ static bool parse_newest_in_marshall_buffer(
        struct ctdb_rec_data_old *rec = NULL;
        struct ctdb_ltdb_header *h = NULL;
        TDB_DATA data;
-       int i;
+       uint32_t i;
 
        if (buf == NULL) {
                return false;
@@ -589,7 +590,7 @@ static NTSTATUS db_ctdb_transaction_store(struct 
db_ctdb_transaction_handle *h,
                SAFE_FREE(rec.dptr);
        }
 
-       header.dmaster = get_my_vnn();
+       header.dmaster = ctdbd_vnn(h->ctx->conn);
        header.rsn++;
 
        h->m_write = db_ctdb_marshall_add(h, h->m_write, h->ctx->db_id, 0, key, 
&header, data);
@@ -760,8 +761,7 @@ static int db_ctdb_transaction_commit(struct db_context *db)
 
 again:
        /* tell ctdbd to commit to the other nodes */
-       ret = ctdbd_control_local(messaging_ctdbd_connection(),
-                                 CTDB_CONTROL_TRANS3_COMMIT,
+       ret = ctdbd_control_local(ctx->conn, CTDB_CONTROL_TRANS3_COMMIT,
                                  h->ctx->db_id, 0,
                                  db_ctdb_marshall_finish(h->m_write),
                                  NULL, NULL, &status);
@@ -858,6 +858,7 @@ static NTSTATUS db_ctdb_send_schedule_for_deletion(struct 
db_record *rec)
        int32_t cstatus;
        struct db_ctdb_rec *crec = talloc_get_type_abort(
                rec->private_data, struct db_ctdb_rec);
+       struct db_ctdb_ctx *ctx = crec->ctdb_ctx;
 
        indata.dsize = offsetof(struct ctdb_control_schedule_for_deletion, key) 
+ rec->key.dsize;
        indata.dptr = talloc_zero_array(crec, uint8_t, indata.dsize);
@@ -867,12 +868,12 @@ static NTSTATUS db_ctdb_send_schedule_for_deletion(struct 
db_record *rec)
        }
 
        dd = (struct ctdb_control_schedule_for_deletion *)(void *)indata.dptr;
-       dd->db_id = crec->ctdb_ctx->db_id;
+       dd->db_id = ctx->db_id;
        dd->hdr = crec->header;
        dd->keylen = rec->key.dsize;
        memcpy(dd->key, rec->key.dptr, rec->key.dsize);
 
-       ret = ctdbd_control_local(messaging_ctdbd_connection(),
+       ret = ctdbd_control_local(ctx->conn,
                                  CTDB_CONTROL_SCHEDULE_FOR_DELETION,
                                  crec->ctdb_ctx->db_id,
                                  CTDB_CTRL_FLAG_NOREPLY, /* flags */
@@ -977,9 +978,9 @@ static int db_ctdb_record_destr(struct db_record* data)
  * either for reading or for writing.
  */
 static bool db_ctdb_can_use_local_hdr(const struct ctdb_ltdb_header *hdr,
-                                     bool read_only)
+                                     uint32_t my_vnn, bool read_only)
 {
-       if (hdr->dmaster != get_my_vnn()) {
+       if (hdr->dmaster != my_vnn) {
                /* If we're not dmaster, it must be r/o copy. */
                return read_only && (hdr->flags & CTDB_REC_RO_HAVE_READONLY);
        }
@@ -990,7 +991,8 @@ static bool db_ctdb_can_use_local_hdr(const struct 
ctdb_ltdb_header *hdr,
        return read_only || !(hdr->flags & CTDB_REC_RO_HAVE_DELEGATIONS);
 }
 
-static bool db_ctdb_can_use_local_copy(TDB_DATA ctdb_data, bool read_only)
+static bool db_ctdb_can_use_local_copy(TDB_DATA ctdb_data, uint32_t my_vnn,
+                                      bool read_only)
 {
        if (ctdb_data.dptr == NULL) {
                return false;
@@ -1001,7 +1003,7 @@ static bool db_ctdb_can_use_local_copy(TDB_DATA 
ctdb_data, bool read_only)
        }
 
        return db_ctdb_can_use_local_hdr(
-               (struct ctdb_ltdb_header *)ctdb_data.dptr, read_only);
+               (struct ctdb_ltdb_header *)ctdb_data.dptr, my_vnn, read_only);
 }
 
 static struct db_record *fetch_locked_internal(struct db_ctdb_ctx *ctx,
@@ -1086,7 +1088,8 @@ again:
         * take the shortcut and just return it.
         */
 
-       if (!db_ctdb_can_use_local_copy(ctdb_data, false)) {
+       if (!db_ctdb_can_use_local_copy(ctdb_data, ctdbd_vnn(ctx->conn),
+                                       false)) {
                SAFE_FREE(ctdb_data.dptr);
                tdb_chainunlock(ctx->wtdb->tdb, key);
                talloc_set_destructor(result, NULL);
@@ -1099,16 +1102,17 @@ again:
 
                migrate_attempts += 1;
 
-               DEBUG(10, ("ctdb_data.dptr = %p, dmaster = %u (%u) %u\n",
+               DEBUG(10, ("ctdb_data.dptr = %p, dmaster = %"PRIu32" "
+                          "(%"PRIu32") %"PRIu32"\n",
                           ctdb_data.dptr, ctdb_data.dptr ?
-                          ((struct ctdb_ltdb_header *)ctdb_data.dptr)->dmaster 
: -1,
-                          get_my_vnn(),
+                          ((struct ctdb_ltdb_header *)ctdb_data.dptr)->dmaster 
:
+                          UINT32_MAX,
+                          ctdbd_vnn(ctx->conn),
                           ctdb_data.dptr ?
                           ((struct ctdb_ltdb_header *)ctdb_data.dptr)->flags : 
0));
 
                GetTimeOfDay(&ctdb_start_time);
-               ret = ctdbd_migrate(messaging_ctdbd_connection(), ctx->db_id,
-                                   key);
+               ret = ctdbd_migrate(ctx->conn, ctx->db_id, key);
                ctdb_time += timeval_elapsed(&ctdb_start_time);
 
                if (ret != 0) {
@@ -1214,6 +1218,7 @@ static struct db_record *db_ctdb_try_fetch_locked(struct 
db_context *db,
 struct db_ctdb_parse_record_state {
        void (*parser)(TDB_DATA key, TDB_DATA data, void *private_data);
        void *private_data;
+       uint32_t my_vnn;
        bool ask_for_readonly_copy;
        bool done;
 };
@@ -1234,7 +1239,7 @@ static void db_ctdb_parse_record_parser_nonpersistent(
        struct db_ctdb_parse_record_state *state =
                (struct db_ctdb_parse_record_state *)private_data;
 
-       if (db_ctdb_can_use_local_hdr(header, true)) {
+       if (db_ctdb_can_use_local_hdr(header, state->my_vnn, true)) {
                state->parser(key, data, state->private_data);
                state->done = true;
        } else {
@@ -1261,6 +1266,7 @@ static NTSTATUS db_ctdb_parse_record(struct db_context 
*db, TDB_DATA key,
 
        state.parser = parser;
        state.private_data = private_data;
+       state.my_vnn = ctdbd_vnn(ctx->conn);
 
        if (ctx->transaction != NULL) {
                struct db_ctdb_transaction_handle *h = ctx->transaction;
@@ -1295,7 +1301,7 @@ static NTSTATUS db_ctdb_parse_record(struct db_context 
*db, TDB_DATA key,
                return NT_STATUS_OK;
        }
 
-       ret = ctdbd_parse(messaging_ctdbd_connection(), ctx->db_id, key,
+       ret = ctdbd_parse(ctx->conn, ctx->db_id, key,
                          state.ask_for_readonly_copy, parser, private_data);
        if (ret != 0) {
                if (ret == ENOENT) {
@@ -1431,7 +1437,7 @@ static int db_ctdb_traverse(struct db_context *db,
                        struct db_context *newkeys = db_open_rbt(talloc_tos());
                        struct ctdb_marshall_buffer *mbuf = 
ctx->transaction->m_write;
                        struct ctdb_rec_data_old *rec=NULL;
-                       int i;


-- 
Samba Shared Repository

Reply via email to