summaryrefslogtreecommitdiff
path: root/ctdb
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2016-04-19 15:24:11 +1000
committerMartin Schwenke <martins@samba.org>2016-07-05 10:53:14 +0200
commit3888439971afd81745e275086fd1142dd78b8aa8 (patch)
tree1d0a7d4d263c240dd4deb64b2d6415b86a100056 /ctdb
parentf00319f0bcbeab728f78748b487154b75f84f796 (diff)
downloadsamba-3888439971afd81745e275086fd1142dd78b8aa8.tar.gz
ctdb-client: Factor out ctdb_client_get_server_id function
Signed-off-by: Amitay Isaacs <amitay@gmail.com> Reviewed-by: Martin Schwenke <martin@meltin.net>
Diffstat (limited to 'ctdb')
-rw-r--r--ctdb/client/client.h4
-rw-r--r--ctdb/client/client_db.c10
-rw-r--r--ctdb/client/client_util.c15
3 files changed, 22 insertions, 7 deletions
diff --git a/ctdb/client/client.h b/ctdb/client/client.h
index 1f1fedad445..3ad098fd699 100644
--- a/ctdb/client/client.h
+++ b/ctdb/client/client.h
@@ -854,6 +854,10 @@ int ctdb_ctrl_modflags(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
uint32_t destnode, struct timeval timeout,
uint32_t set, uint32_t clear);
+struct ctdb_server_id ctdb_client_get_server_id(
+ struct ctdb_client_context *client,
+ uint32_t task_id);
+
bool ctdb_server_id_equal(struct ctdb_server_id *sid1,
struct ctdb_server_id *sid2);
diff --git a/ctdb/client/client_db.c b/ctdb/client/client_db.c
index d5633d77043..09d9f23ecac 100644
--- a/ctdb/client/client_db.c
+++ b/ctdb/client/client_db.c
@@ -1747,13 +1747,9 @@ struct tevent_req *ctdb_transaction_start_send(TALLOC_CTX *mem_ctx,
h->readonly = readonly;
h->updated = false;
- /* SRVID is unique for databases, so client can have transactions active
- * for multiple databases */
- h->sid.pid = getpid();
- h->sid.task_id = db->db_id;
- h->sid.vnn = state->destnode;
- h->sid.unique_id = h->sid.task_id;
- h->sid.unique_id = (h->sid.unique_id << 32) | h->sid.pid;
+ /* SRVID is unique for databases, so client can have transactions
+ * active for multiple databases */
+ h->sid = ctdb_client_get_server_id(client, db->db_id);
h->recbuf = ctdb_rec_buffer_init(h, db->db_id);
if (tevent_req_nomem(h->recbuf, req)) {
diff --git a/ctdb/client/client_util.c b/ctdb/client/client_util.c
index c4dbe04b9d5..1ba1e7d10e8 100644
--- a/ctdb/client/client_util.c
+++ b/ctdb/client/client_util.c
@@ -112,6 +112,21 @@ int ctdb_ctrl_modflags(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
return ret;
}
+struct ctdb_server_id ctdb_client_get_server_id(
+ struct ctdb_client_context *client,
+ uint32_t task_id)
+{
+ struct ctdb_server_id sid;
+
+ sid.pid = getpid();
+ sid.task_id = task_id;
+ sid.vnn = ctdb_client_pnn(client);
+ sid.unique_id = task_id;
+ sid.unique_id = (sid.unique_id << 32) | sid.pid;
+
+ return sid;
+}
+
bool ctdb_server_id_equal(struct ctdb_server_id *sid1,
struct ctdb_server_id *sid2)
{