Fix starvation of pending writes in CTDB queues
[Samba.git] / ctdb / client / client_sync.h
blob2d168e02dfec27e92aa657b16882e25f684b2eb2
1 /*
2 CTDB client code - sync api
4 Copyright (C) Amitay Isaacs 2017
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, see <http://www.gnu.org/licenses/>.
20 #ifndef __CTDB_CLIENT_SYNC_H__
21 #define __CTDB_CLIENT_SYNC_H__
23 #include <talloc.h>
24 #include <tevent.h>
26 /* from client/client_control_sync.c */
28 int ctdb_ctrl_process_exists(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
29 struct ctdb_client_context *client,
30 int destnode, struct timeval timeout,
31 pid_t pid, int *status);
33 int ctdb_ctrl_statistics(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
34 struct ctdb_client_context *client,
35 int destnode, struct timeval timeout,
36 struct ctdb_statistics **stats);
38 int ctdb_ctrl_ping(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
39 struct ctdb_client_context *client,
40 int destnode, struct timeval timeout,
41 int *num_clients);
43 int ctdb_ctrl_getdbpath(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
44 struct ctdb_client_context *client,
45 int destnode, struct timeval timeout,
46 uint32_t db_id, const char **db_path);
48 int ctdb_ctrl_getvnnmap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
49 struct ctdb_client_context *client,
50 int destnode, struct timeval timeout,
51 struct ctdb_vnn_map **vnnmap);
53 int ctdb_ctrl_getdebug(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
54 struct ctdb_client_context *client,
55 int destnode, struct timeval timeout,
56 int *loglevel);
58 int ctdb_ctrl_setdebug(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
59 struct ctdb_client_context *client,
60 int destnode, struct timeval timeout,
61 int loglevel);
63 int ctdb_ctrl_get_dbmap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
64 struct ctdb_client_context *client,
65 int destnode, struct timeval timeout,
66 struct ctdb_dbid_map **dbmap);
68 int ctdb_ctrl_get_recmode(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
69 struct ctdb_client_context *client,
70 int destnode, struct timeval timeout,
71 int *recmode);
73 int ctdb_ctrl_set_recmode(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
74 struct ctdb_client_context *client,
75 int destnode, struct timeval timeout,
76 int recmode);
78 int ctdb_ctrl_statistics_reset(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
79 struct ctdb_client_context *client,
80 int destnode, struct timeval timeout);
82 int ctdb_ctrl_db_attach(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
83 struct ctdb_client_context *client,
84 int destnode, struct timeval timeout,
85 const char *db_name, uint32_t *db_id);
87 int ctdb_ctrl_traverse_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
88 struct ctdb_client_context *client,
89 int destnode, struct timeval timeout,
90 struct ctdb_traverse_start *traverse);
92 int ctdb_ctrl_register_srvid(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
93 struct ctdb_client_context *client,
94 int destnode, struct timeval timeout,
95 uint64_t srvid);
97 int ctdb_ctrl_deregister_srvid(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
98 struct ctdb_client_context *client,
99 int destnode, struct timeval timeout,
100 uint64_t srvid);
102 int ctdb_ctrl_get_dbname(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
103 struct ctdb_client_context *client,
104 int destnode, struct timeval timeout,
105 uint32_t db_id, const char **db_name);
107 int ctdb_ctrl_enable_seqnum(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
108 struct ctdb_client_context *client,
109 int destnode, struct timeval timeout,
110 uint32_t db_id);
112 int ctdb_ctrl_update_seqnum(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
113 struct ctdb_client_context *client,
114 int destnode, struct timeval timeout,
115 uint32_t db_id);
117 int ctdb_ctrl_dump_memory(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
118 struct ctdb_client_context *client,
119 int destnode, struct timeval timeout,
120 const char **mem_str);
122 int ctdb_ctrl_get_pid(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
123 struct ctdb_client_context *client,
124 int destnode, struct timeval timeout,
125 pid_t *pid);
127 int ctdb_ctrl_freeze(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
128 struct ctdb_client_context *client,
129 int destnode, struct timeval timeout,
130 int priority);
132 int ctdb_ctrl_get_pnn(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
133 struct ctdb_client_context *client,
134 int destnode, struct timeval timeout,
135 uint32_t *pnn);
137 int ctdb_ctrl_shutdown(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
138 struct ctdb_client_context *client,
139 int destnode, struct timeval timeout);
141 int ctdb_ctrl_tcp_add(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
142 struct ctdb_client_context *client,
143 int destnode, struct timeval timeout,
144 struct ctdb_connection *conn);
146 int ctdb_ctrl_tcp_remove(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
147 struct ctdb_client_context *client,
148 int destnode, struct timeval timeout,
149 struct ctdb_connection *conn);
151 int ctdb_ctrl_set_tunable(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
152 struct ctdb_client_context *client,
153 int destnode, struct timeval timeout,
154 struct ctdb_tunable *tunable);
156 int ctdb_ctrl_get_tunable(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
157 struct ctdb_client_context *client,
158 int destnode, struct timeval timeout,
159 const char *var, uint32_t *value);
161 int ctdb_ctrl_list_tunables(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
162 struct ctdb_client_context *client,
163 int destnode, struct timeval timeout,
164 struct ctdb_var_list **var_list);
166 int ctdb_ctrl_modify_flags(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
167 struct ctdb_client_context *client,
168 int destnode, struct timeval timeout,
169 uint32_t pnn, uint32_t old_flags,
170 uint32_t new_flags);
172 int ctdb_ctrl_get_all_tunables(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
173 struct ctdb_client_context *client,
174 int destnode, struct timeval timeout,
175 struct ctdb_tunable_list **tun_list);
177 int ctdb_ctrl_get_tcp_tickle_list(TALLOC_CTX *mem_ctx,
178 struct tevent_context *ev,
179 struct ctdb_client_context *client,
180 int destnode, struct timeval timeout,
181 ctdb_sock_addr *addr,
182 struct ctdb_tickle_list **tickles);
184 int ctdb_ctrl_set_tcp_tickle_list(TALLOC_CTX *mem_ctx,
185 struct tevent_context *ev,
186 struct ctdb_client_context *client,
187 int destnode, struct timeval timeout,
188 struct ctdb_tickle_list *tickles);
190 int ctdb_ctrl_db_attach_persistent(TALLOC_CTX *mem_ctx,
191 struct tevent_context *ev,
192 struct ctdb_client_context *client,
193 int destnode, struct timeval timeout,
194 const char *db_name, uint32_t *db_id);
196 int ctdb_ctrl_send_gratuitous_arp(TALLOC_CTX *mem_ctx,
197 struct tevent_context *ev,
198 struct ctdb_client_context *client,
199 int destnode, struct timeval timeout,
200 struct ctdb_addr_info *addr_info);
202 int ctdb_ctrl_wipe_database(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
203 struct ctdb_client_context *client,
204 int destnode, struct timeval timeout,
205 uint32_t db_id, uint32_t tid);
207 int ctdb_ctrl_uptime(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
208 struct ctdb_client_context *client,
209 int destnode, struct timeval timeout,
210 struct ctdb_uptime **uptime);
212 int ctdb_ctrl_start_recovery(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
213 struct ctdb_client_context *client,
214 int destnode, struct timeval timeout);
216 int ctdb_ctrl_end_recovery(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
217 struct ctdb_client_context *client,
218 int destnode, struct timeval timeout);
220 int ctdb_ctrl_reload_nodes_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
221 struct ctdb_client_context *client,
222 int destnode, struct timeval timeout);
224 int ctdb_ctrl_add_public_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
225 struct ctdb_client_context *client,
226 int destnode, struct timeval timeout,
227 struct ctdb_addr_info *addr_info);
229 int ctdb_ctrl_del_public_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
230 struct ctdb_client_context *client,
231 int destnode, struct timeval timeout,
232 struct ctdb_addr_info *addr_info);
234 int ctdb_ctrl_get_capabilities(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
235 struct ctdb_client_context *client,
236 int destnode, struct timeval timeout,
237 uint32_t *caps);
239 int ctdb_ctrl_release_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
240 struct ctdb_client_context *client,
241 int destnode, struct timeval timeout,
242 struct ctdb_public_ip *pubip);
244 int ctdb_ctrl_takeover_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
245 struct ctdb_client_context *client,
246 int destnode, struct timeval timeout,
247 struct ctdb_public_ip *pubip);
249 int ctdb_ctrl_get_public_ips(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
250 struct ctdb_client_context *client,
251 int destnode, struct timeval timeout,
252 bool available_only,
253 struct ctdb_public_ip_list **pubip_list);
255 int ctdb_ctrl_get_nodemap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
256 struct ctdb_client_context *client,
257 int destnode, struct timeval timeout,
258 struct ctdb_node_map **nodemap);
260 int ctdb_ctrl_traverse_kill(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
261 struct ctdb_client_context *client,
262 int destnode, struct timeval timeout,
263 struct ctdb_traverse_start *traverse);
265 int ctdb_ctrl_get_reclock_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
266 struct ctdb_client_context *client,
267 int destnode, struct timeval timeout,
268 const char **reclock_file);
270 int ctdb_ctrl_stop_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
271 struct ctdb_client_context *client,
272 int destnode, struct timeval timeout);
274 int ctdb_ctrl_continue_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
275 struct ctdb_client_context *client,
276 int destnode, struct timeval timeout);
278 int ctdb_ctrl_set_lmasterrole(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
279 struct ctdb_client_context *client,
280 int destnode, struct timeval timeout,
281 uint32_t lmaster_role);
283 int ctdb_ctrl_set_recmasterrole(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
284 struct ctdb_client_context *client,
285 int destnode, struct timeval timeout,
286 uint32_t recmaster_role);
288 int ctdb_ctrl_set_ban_state(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
289 struct ctdb_client_context *client,
290 int destnode, struct timeval timeout,
291 struct ctdb_ban_state *ban_state);
293 int ctdb_ctrl_get_ban_state(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
294 struct ctdb_client_context *client,
295 int destnode, struct timeval timeout,
296 struct ctdb_ban_state **ban_state);
298 int ctdb_ctrl_register_notify(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
299 struct ctdb_client_context *client,
300 int destnode, struct timeval timeout,
301 struct ctdb_notify_data *notify);
303 int ctdb_ctrl_deregister_notify(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
304 struct ctdb_client_context *client,
305 int destnode, struct timeval timeout,
306 uint64_t srvid);
308 int ctdb_ctrl_trans3_commit(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
309 struct ctdb_client_context *client,
310 int destnode, struct timeval timeout,
311 struct ctdb_rec_buffer *recbuf);
313 int ctdb_ctrl_get_db_seqnum(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
314 struct ctdb_client_context *client,
315 int destnode, struct timeval timeout,
316 uint32_t db_id, uint64_t *seqnum);
318 int ctdb_ctrl_db_set_healthy(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
319 struct ctdb_client_context *client,
320 int destnode, struct timeval timeout,
321 uint32_t db_id);
323 int ctdb_ctrl_db_get_health(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
324 struct ctdb_client_context *client,
325 int destnode, struct timeval timeout,
326 uint32_t db_id, const char **reason);
328 int ctdb_ctrl_get_public_ip_info(TALLOC_CTX *mem_ctx,
329 struct tevent_context *ev,
330 struct ctdb_client_context *client,
331 int destnode, struct timeval timeout,
332 ctdb_sock_addr *addr,
333 struct ctdb_public_ip_info **ipinfo);
335 int ctdb_ctrl_get_ifaces(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
336 struct ctdb_client_context *client,
337 int destnode, struct timeval timeout,
338 struct ctdb_iface_list **iface_list);
340 int ctdb_ctrl_set_iface_link_state(TALLOC_CTX *mem_ctx,
341 struct tevent_context *ev,
342 struct ctdb_client_context *client,
343 int destnode, struct timeval timeout,
344 struct ctdb_iface *iface);
346 int ctdb_ctrl_tcp_add_delayed_update(TALLOC_CTX *mem_ctx,
347 struct tevent_context *ev,
348 struct ctdb_client_context *client,
349 int destnode, struct timeval timeout,
350 struct ctdb_connection *conn);
352 int ctdb_ctrl_get_stat_history(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
353 struct ctdb_client_context *client,
354 int destnode, struct timeval timeout,
355 struct ctdb_statistics_list **stats_list);
357 int ctdb_ctrl_schedule_for_deletion(TALLOC_CTX *mem_ctx,
358 struct tevent_context *ev,
359 struct ctdb_client_context *client,
360 int destnode, struct timeval timeout,
361 struct ctdb_key_data *key);
363 int ctdb_ctrl_set_db_readonly(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
364 struct ctdb_client_context *client,
365 int destnode, struct timeval timeout,
366 uint32_t db_id);
368 int ctdb_ctrl_traverse_start_ext(TALLOC_CTX *mem_ctx,
369 struct tevent_context *ev,
370 struct ctdb_client_context *client,
371 int destnode, struct timeval timeout,
372 struct ctdb_traverse_start_ext *traverse);
374 int ctdb_ctrl_get_db_statistics(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
375 struct ctdb_client_context *client,
376 int destnode, struct timeval timeout,
377 uint32_t db_id,
378 struct ctdb_db_statistics **dbstats);
380 int ctdb_ctrl_set_db_sticky(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
381 struct ctdb_client_context *client,
382 int destnode, struct timeval timeout,
383 uint32_t db_id);
385 int ctdb_ctrl_reload_public_ips(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
386 struct ctdb_client_context *client,
387 int destnode, struct timeval timeout);
389 int ctdb_ctrl_get_runstate(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
390 struct ctdb_client_context *client,
391 int destnode, struct timeval timeout,
392 enum ctdb_runstate *runstate);
394 int ctdb_ctrl_db_detach(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
395 struct ctdb_client_context *client,
396 int destnode, struct timeval timeout,
397 uint32_t db_id);
399 int ctdb_ctrl_get_nodes_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
400 struct ctdb_client_context *client,
401 int destnode, struct timeval timeout,
402 struct ctdb_node_map **nodemap);
404 int ctdb_ctrl_db_freeze(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
405 struct ctdb_client_context *client,
406 int destnode, struct timeval timeout, uint32_t db_id);
408 int ctdb_ctrl_db_thaw(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
409 struct ctdb_client_context *client,
410 int destnode, struct timeval timeout, uint32_t db_id);
412 int ctdb_ctrl_db_transaction_start(TALLOC_CTX *mem_ctx,
413 struct tevent_context *ev,
414 struct ctdb_client_context *client,
415 int destnode, struct timeval timeout,
416 struct ctdb_transdb *transdb);
418 int ctdb_ctrl_db_transaction_commit(TALLOC_CTX *mem_ctx,
419 struct tevent_context *ev,
420 struct ctdb_client_context *client,
421 int destnode, struct timeval timeout,
422 struct ctdb_transdb *transdb);
424 int ctdb_ctrl_db_transaction_cancel(TALLOC_CTX *mem_ctx,
425 struct tevent_context *ev,
426 struct ctdb_client_context *client,
427 int destnode, struct timeval timeout,
428 uint32_t db_id);
430 int ctdb_ctrl_db_pull(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
431 struct ctdb_client_context *client,
432 int destnode, struct timeval timeout,
433 struct ctdb_pulldb_ext *pulldb, uint32_t *num_records);
435 int ctdb_ctrl_db_push_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
436 struct ctdb_client_context *client,
437 int destnode, struct timeval timeout,
438 struct ctdb_pulldb_ext *pulldb);
440 int ctdb_ctrl_db_push_confirm(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
441 struct ctdb_client_context *client,
442 int destnode, struct timeval timeout,
443 uint32_t db_id, uint32_t *num_records);
445 int ctdb_ctrl_db_open_flags(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
446 struct ctdb_client_context *client,
447 int destnode, struct timeval timeout,
448 uint32_t db_id, int *tdb_flags);
450 int ctdb_ctrl_db_attach_replicated(TALLOC_CTX *mem_ctx,
451 struct tevent_context *ev,
452 struct ctdb_client_context *client,
453 int destnode, struct timeval timeout,
454 const char *db_name, uint32_t *db_id);
456 int ctdb_ctrl_check_pid_srvid(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
457 struct ctdb_client_context *client,
458 int destnode, struct timeval timeout,
459 struct ctdb_pid_srvid *pid_srvid, int *status);
461 int ctdb_ctrl_tunnel_register(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
462 struct ctdb_client_context *client,
463 int destnode, struct timeval timeout,
464 uint64_t tunnel_id);
466 int ctdb_ctrl_tunnel_deregister(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
467 struct ctdb_client_context *client,
468 int destnode, struct timeval timeout,
469 uint64_t tunnel_id);
471 int ctdb_ctrl_disable_node(TALLOC_CTX *mem_ctx,
472 struct tevent_context *ev,
473 struct ctdb_client_context *client,
474 int destnode,
475 struct timeval timeout);
477 int ctdb_ctrl_enable_node(TALLOC_CTX *mem_ctx,
478 struct tevent_context *ev,
479 struct ctdb_client_context *client,
480 int destnode,
481 struct timeval timeout);
483 /* from client/client_message_sync.c */
485 int ctdb_message_recd_update_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
486 struct ctdb_client_context *client,
487 int destnode, struct ctdb_public_ip *pubip);
489 int ctdb_message_mem_dump(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
490 struct ctdb_client_context *client,
491 int destnode, struct ctdb_srvid_message *msg);
493 int ctdb_message_reload_nodes(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
494 struct ctdb_client_context *client,
495 int destnode);
497 int ctdb_message_takeover_run(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
498 struct ctdb_client_context *client,
499 int destnode, struct ctdb_srvid_message *msg);
501 int ctdb_message_rebalance_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
502 struct ctdb_client_context *client,
503 int destnode, uint32_t pnn);
505 int ctdb_message_disable_takeover_runs(TALLOC_CTX *mem_ctx,
506 struct tevent_context *ev,
507 struct ctdb_client_context *client,
508 int destnode,
509 struct ctdb_disable_message *disable);
511 int ctdb_message_disable_recoveries(TALLOC_CTX *mem_ctx,
512 struct tevent_context *ev,
513 struct ctdb_client_context *client,
514 int destnode,
515 struct ctdb_disable_message *disable);
517 #endif /* __CTDB_CLIENT_SYNC_H__ */