------------------------------------------------------------
revno: 492
revision-id: [EMAIL PROTECTED]
parent: [EMAIL PROTECTED]
committer: Andrew Tridgell <[EMAIL PROTECTED]>
branch nick: tridge
timestamp: Thu 2007-06-07 18:05:25 +1000
message:
get all the tunables at once in recovery daemon
modified:
common/ctdb_client.c ctdb_client.c-20070411010216-3kd8v37k61steeya-1
common/ctdb_control.c
ctdb_control.c-20070426122724-j6gkpiofhbwdin63-1
common/ctdb_recoverd.c recoverd.c-20070503213540-bvxuyd9jm1f7ig90-1
include/ctdb_private.h
ctdb_private.h-20061117234101-o3qt14umlg9en8z0-13
=== modified file 'common/ctdb_client.c'
--- a/common/ctdb_client.c 2007-06-07 05:18:55 +0000
+++ b/common/ctdb_client.c 2007-06-07 08:05:25 +0000
@@ -1946,3 +1946,33 @@
return 0;
}
+
+/*
+ get all tunables
+ */
+int ctdb_ctrl_get_all_tunables(struct ctdb_context *ctdb,
+ struct timeval timeout,
+ uint32_t destnode,
+ struct ctdb_tunable *tunables)
+{
+ TDB_DATA outdata;
+ int ret;
+ int32_t res;
+
+ ret = ctdb_control(ctdb, destnode, 0, CTDB_CONTROL_GET_ALL_TUNABLES, 0,
tdb_null, ctdb,
+ &outdata, &res, &timeout, NULL);
+ if (ret != 0 || res != 0) {
+ DEBUG(0,(__location__ " ctdb_control for get all tunables
failed\n"));
+ return -1;
+ }
+
+ if (outdata.dsize != sizeof(*tunables)) {
+ DEBUG(0,(__location__ " bad data size %u in
ctdb_ctrl_get_all_tunables should be %u\n",
+ outdata.dsize, sizeof(*tunables)));
+ return -1;
+ }
+
+ *tunables = *(struct ctdb_tunable *)outdata.dptr;
+ talloc_free(outdata.dptr);
+ return 0;
+}
=== modified file 'common/ctdb_control.c'
--- a/common/ctdb_control.c 2007-06-07 05:18:55 +0000
+++ b/common/ctdb_control.c 2007-06-07 08:05:25 +0000
@@ -80,6 +80,13 @@
return 0;
}
+ case CTDB_CONTROL_GET_ALL_TUNABLES: {
+ CHECK_CONTROL_DATA_SIZE(0);
+ outdata->dptr = (uint8_t *)&ctdb->tunable;
+ outdata->dsize = sizeof(ctdb->tunable);
+ return 0;
+ }
+
case CTDB_CONTROL_DUMP_MEMORY: {
CHECK_CONTROL_DATA_SIZE(0);
talloc_report_full(ctdb, stdout);
=== modified file 'common/ctdb_recoverd.c'
--- a/common/ctdb_recoverd.c 2007-06-07 06:48:31 +0000
+++ b/common/ctdb_recoverd.c 2007-06-07 08:05:25 +0000
@@ -1031,18 +1031,11 @@
ctdb_wait_timeout(ctdb, ctdb->tunable.recover_interval);
/* get relevant tunables */
- ctdb_ctrl_get_tunable(ctdb, CONTROL_TIMEOUT(), CTDB_CURRENT_NODE,
- "RecoverTimeout", &ctdb->tunable.recover_timeout);
- ctdb_ctrl_get_tunable(ctdb, CONTROL_TIMEOUT(), CTDB_CURRENT_NODE,
- "RecoverInterval",
&ctdb->tunable.recover_interval);
- ctdb_ctrl_get_tunable(ctdb, CONTROL_TIMEOUT(), CTDB_CURRENT_NODE,
- "ElectionTimeout",
&ctdb->tunable.election_timeout);
- ctdb_ctrl_get_tunable(ctdb, CONTROL_TIMEOUT(), CTDB_CURRENT_NODE,
- "TakeoverTimeout",
&ctdb->tunable.takeover_timeout);
- ctdb_ctrl_get_tunable(ctdb, CONTROL_TIMEOUT(), CTDB_CURRENT_NODE,
- "RecoveryGracePeriod",
&ctdb->tunable.recovery_grace_period);
- ctdb_ctrl_get_tunable(ctdb, CONTROL_TIMEOUT(), CTDB_CURRENT_NODE,
- "RecoveryBanPeriod",
&ctdb->tunable.recovery_ban_period);
+ ret = ctdb_ctrl_get_all_tunables(ctdb, CONTROL_TIMEOUT(),
CTDB_CURRENT_NODE, &ctdb->tunable);
+ if (ret != 0) {
+ DEBUG(0,("Failed to get tunables - retrying\n"));
+ goto again;
+ }
vnn = ctdb_ctrl_getvnn(ctdb, CONTROL_TIMEOUT(), CTDB_CURRENT_NODE);
if (vnn == (uint32_t)-1) {
=== modified file 'include/ctdb_private.h'
--- a/include/ctdb_private.h 2007-06-07 06:34:33 +0000
+++ b/include/ctdb_private.h 2007-06-07 08:05:25 +0000
@@ -419,6 +419,7 @@
CTDB_CONTROL_LIST_TUNABLES = 50,
CTDB_CONTROL_GET_PUBLIC_IPS = 51,
CTDB_CONTROL_MODIFY_FLAGS = 52,
+ CTDB_CONTROL_GET_ALL_TUNABLES = 53,
};
/*
@@ -1032,4 +1033,9 @@
int32_t ctdb_control_modflags(struct ctdb_context *ctdb, TDB_DATA indata);
+int ctdb_ctrl_get_all_tunables(struct ctdb_context *ctdb,
+ struct timeval timeout,
+ uint32_t destnode,
+ struct ctdb_tunable *tunables);
+
#endif