The branch, master has been updated
       via  b99afc98bedf1a51d315e311f27c3fc55fd940e7 (commit)
      from  964530d70ba2ca949380d30a0e3d622963a6206c (commit)

http://gitweb.samba.org/?p=sahlberg/ctdb.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit b99afc98bedf1a51d315e311f27c3fc55fd940e7
Author: Ronnie Sahlberg <[email protected]>
Date:   Wed Jul 1 09:33:08 2009 +1000

    update enable/disable

-----------------------------------------------------------------------

Summary of changes:
 tools/ctdb.c |   45 +++++++++++++++++++++++++++++++++++----------
 1 files changed, 35 insertions(+), 10 deletions(-)


Changeset truncated at 500 lines:

diff --git a/tools/ctdb.c b/tools/ctdb.c
index b670f92..5ca013c 100644
--- a/tools/ctdb.c
+++ b/tools/ctdb.c
@@ -1534,12 +1534,24 @@ static int control_getpid(struct ctdb_context *ctdb, 
int argc, const char **argv
 static int control_disable(struct ctdb_context *ctdb, int argc, const char 
**argv)
 {
        int ret;
+       struct ctdb_node_map *nodemap=NULL;
 
-       ret = ctdb_ctrl_modflags(ctdb, TIMELIMIT(), options.pnn, 
NODE_FLAGS_PERMANENTLY_DISABLED, 0);
-       if (ret != 0) {
-               DEBUG(DEBUG_ERR, ("Unable to disable node %u\n", options.pnn));
-               return ret;
-       }
+       do {
+               ret = ctdb_ctrl_modflags(ctdb, TIMELIMIT(), options.pnn, 
NODE_FLAGS_PERMANENTLY_DISABLED, 0);
+               if (ret != 0) {
+                       DEBUG(DEBUG_ERR, ("Unable to disable node %u\n", 
options.pnn));
+                       return ret;
+               }
+
+               sleep(1);
+
+               /* read the nodemap and verify the change took effect */
+               if (ctdb_ctrl_getnodemap(ctdb, TIMELIMIT(), CTDB_CURRENT_NODE, 
ctdb, &nodemap) != 0) {
+                       DEBUG(DEBUG_ERR, ("Unable to get nodemap from local 
node\n"));
+                       exit(10);
+               }
+
+       } while (!(nodemap->nodes[options.pnn].flags & 
NODE_FLAGS_PERMANENTLY_DISABLED));
 
        return 0;
 }
@@ -1551,11 +1563,24 @@ static int control_enable(struct ctdb_context *ctdb, 
int argc, const char **argv
 {
        int ret;
 
-       ret = ctdb_ctrl_modflags(ctdb, TIMELIMIT(), options.pnn, 0, 
NODE_FLAGS_PERMANENTLY_DISABLED);
-       if (ret != 0) {
-               DEBUG(DEBUG_ERR, ("Unable to enable node %u\n", options.pnn));
-               return ret;
-       }
+       struct ctdb_node_map *nodemap=NULL;
+
+       do {
+               ret = ctdb_ctrl_modflags(ctdb, TIMELIMIT(), options.pnn, 0, 
NODE_FLAGS_PERMANENTLY_DISABLED);
+               if (ret != 0) {
+                       DEBUG(DEBUG_ERR, ("Unable to enable node %u\n", 
options.pnn));
+                       return ret;
+               }
+
+               sleep(1);
+
+               /* read the nodemap and verify the change took effect */
+               if (ctdb_ctrl_getnodemap(ctdb, TIMELIMIT(), CTDB_CURRENT_NODE, 
ctdb, &nodemap) != 0) {
+                       DEBUG(DEBUG_ERR, ("Unable to get nodemap from local 
node\n"));
+                       exit(10);
+               }
+
+       } while (nodemap->nodes[options.pnn].flags & 
NODE_FLAGS_PERMANENTLY_DISABLED);
 
        return 0;
 }


-- 
CTDB repository

Reply via email to