------------------------------------------------------------
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

Reply via email to