diff options
author | Amitay Isaacs <amitay@gmail.com> | 2016-04-19 15:24:11 +1000 |
---|---|---|
committer | Martin Schwenke <martins@samba.org> | 2016-07-05 10:53:14 +0200 |
commit | 3888439971afd81745e275086fd1142dd78b8aa8 (patch) | |
tree | 1d0a7d4d263c240dd4deb64b2d6415b86a100056 /ctdb | |
parent | f00319f0bcbeab728f78748b487154b75f84f796 (diff) | |
download | samba-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.h | 4 | ||||
-rw-r--r-- | ctdb/client/client_db.c | 10 | ||||
-rw-r--r-- | ctdb/client/client_util.c | 15 |
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) { |