diff options
| author | root <root@rcn1.VSOFS1.COM> | 2009-05-06 07:32:25 +1000 |
|---|---|---|
| committer | root <root@rcn1.VSOFS1.COM> | 2009-05-06 07:32:25 +1000 |
| commit | af25fa38f317fdbc425bfd139ea9b3a33d47f5d4 (patch) | |
| tree | ac3580d9a84f3431aaf40ddb5cfe2b5c5508829c /ctdb/include | |
| parent | 4cef9994a53bf117f3c7c58021522256962a5f28 (diff) | |
fixed a problem with clients disconnecting during a traverse
When a client (such as smbstatus) is killed, it may have outstanding
traverse children on remote nodes. We need to catch the client
disconnect in ctdbd and send a control to all nodes telling them to
kill those outstanding traverse children.
(This used to be ctdb commit f2fb2df4619a14f7f6c11f9132ee7d793028042c)
Diffstat (limited to 'ctdb/include')
| -rw-r--r-- | ctdb/include/ctdb_private.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/ctdb/include/ctdb_private.h b/ctdb/include/ctdb_private.h index eac27f7ed5..f37560abe0 100644 --- a/ctdb/include/ctdb_private.h +++ b/ctdb/include/ctdb_private.h @@ -430,6 +430,7 @@ struct ctdb_db_context { struct ctdb_registered_call *calls; /* list of registered calls */ uint32_t seqnum; struct timed_event *te; + struct ctdb_traverse_local_handle *traverse; }; @@ -560,6 +561,7 @@ enum ctdb_controls {CTDB_CONTROL_PROCESS_EXISTS = 0, CTDB_CONTROL_EVENT_SCRIPT_STOP = 94, CTDB_CONTROL_EVENT_SCRIPT_FINISHED = 95, CTDB_CONTROL_GET_EVENT_SCRIPT_STATUS = 96, + CTDB_CONTROL_TRAVERSE_KILL = 97, }; /* @@ -1118,9 +1120,11 @@ struct ctdb_client_call_state { int32_t ctdb_control_traverse_start(struct ctdb_context *ctdb, TDB_DATA indata, - TDB_DATA *outdata, uint32_t srcnode); + TDB_DATA *outdata, uint32_t srcnode, uint32_t client_id); int32_t ctdb_control_traverse_all(struct ctdb_context *ctdb, TDB_DATA data, TDB_DATA *outdata); int32_t ctdb_control_traverse_data(struct ctdb_context *ctdb, TDB_DATA data, TDB_DATA *outdata); +int32_t ctdb_control_traverse_kill(struct ctdb_context *ctdb, TDB_DATA indata, + TDB_DATA *outdata, uint32_t srcnode); int ctdb_dispatch_message(struct ctdb_context *ctdb, uint64_t srvid, TDB_DATA data); |
