freeze: Make ctdb_start_freeze() a void function
authorAmitay Isaacs <amitay@gmail.com>
Mon, 1 Jul 2013 06:28:04 +0000 (16:28 +1000)
committerMichael Adam <obnox@samba.org>
Mon, 26 Aug 2013 11:35:51 +0000 (13:35 +0200)
If this function fails due to memory errors, there is no way to recover.
The best course of action is to abort.

Signed-off-by: Amitay Isaacs <amitay@gmail.com>
(cherry picked from commit 46efe7a886f8c4c56f19536adc98a73c22db906a)

Conflicts:

server/ctdb_freeze.c

include/ctdb_private.h
server/ctdb_banning.c
server/ctdb_freeze.c

index e381c5b9fba3f87c8b5eac93c3e6433fdb75aa6f..674261295c72ceced8d1e56fbc00229091f5ce12 100644 (file)
@@ -1478,7 +1478,7 @@ int ctdb_ctrl_get_all_tunables(struct ctdb_context *ctdb,
                               uint32_t destnode,
                               struct ctdb_tunable *tunables);
 
-int ctdb_start_freeze(struct ctdb_context *ctdb, uint32_t priority);
+void ctdb_start_freeze(struct ctdb_context *ctdb, uint32_t priority);
 
 bool parse_ip_mask(const char *s, const char *iface, ctdb_sock_addr *addr, unsigned *mask);
 bool parse_ip_port(const char *s, ctdb_sock_addr *addr);
index 35f1784d2dcaa6203dd4c20d384944d43551601d..635a3586b9ea5400ce225736aeaf5e98272c28c5 100644 (file)
@@ -57,9 +57,7 @@ int32_t ctdb_local_node_got_banned(struct ctdb_context *ctdb)
        ctdb->vnn_map->generation = INVALID_GENERATION;
 
        for (i=1; i<=NUM_DB_PRIORITIES; i++) {
-               if (ctdb_start_freeze(ctdb, i) != 0) {
-                       DEBUG(DEBUG_ERR,(__location__ " Failed to freeze db priority %u\n", i));
-               }
+               ctdb_start_freeze(ctdb, i);
        }
        ctdb_release_all_ips(ctdb);
        ctdb->recovery_mode = CTDB_RECOVERY_ACTIVE;
index 69fe88d5723f343dd812e52e1e468aa68fee6085..1f4ebdf735ce0085c8e08aa9b8472d629ff4b75c 100644 (file)
@@ -250,7 +250,7 @@ static int ctdb_freeze_waiter_destructor(struct ctdb_freeze_waiter *w)
 /*
   start the freeze process for a certain priority
  */
-int ctdb_start_freeze(struct ctdb_context *ctdb, uint32_t priority)
+void ctdb_start_freeze(struct ctdb_context *ctdb, uint32_t priority)
 {
        if ((priority < 1) || (priority > NUM_DB_PRIORITIES)) {
                DEBUG(DEBUG_ERR,(__location__ " Invalid db priority : %u\n", priority));
@@ -259,7 +259,7 @@ int ctdb_start_freeze(struct ctdb_context *ctdb, uint32_t priority)
 
        if (ctdb->freeze_mode[priority] == CTDB_FREEZE_FROZEN) {
                /* we're already frozen */
-               return 0;
+               return;
        }
 
        DEBUG(DEBUG_ERR, ("Freeze priority %u\n", priority));
@@ -270,11 +270,9 @@ int ctdb_start_freeze(struct ctdb_context *ctdb, uint32_t priority)
        /* if there isn't a freeze lock child then create one */
        if (ctdb->freeze_handles[priority] == NULL) {
                ctdb->freeze_handles[priority] = ctdb_freeze_lock(ctdb, priority);
-               CTDB_NO_MEMORY(ctdb, ctdb->freeze_handles[priority]);
+               CTDB_NO_MEMORY_FATAL(ctdb, ctdb->freeze_handles[priority]);
                ctdb->freeze_mode[priority] = CTDB_FREEZE_PENDING;
        }
-
-       return 0;
 }
 
 /*
@@ -303,10 +301,7 @@ int32_t ctdb_control_freeze(struct ctdb_context *ctdb, struct ctdb_req_control *
                return 0;
        }
 
-       if (ctdb_start_freeze(ctdb, priority) != 0) {
-               DEBUG(DEBUG_ERR,(__location__ " Failed to start freezing databases with priority %u\n", priority));
-               return -1;
-       }
+       ctdb_start_freeze(ctdb, priority);
 
        /* add ourselves to list of waiters */
        if (ctdb->freeze_handles[priority] == NULL) {
@@ -337,10 +332,7 @@ bool ctdb_blocking_freeze(struct ctdb_context *ctdb)
        int i;
 
        for (i=1; i<=NUM_DB_PRIORITIES; i++) {
-               if (ctdb_start_freeze(ctdb, i)) {
-                       DEBUG(DEBUG_ERR,(__location__ " Failed to freeze databases of prio %u\n", i));
-                       continue;
-               }
+               ctdb_start_freeze(ctdb, i);
 
                /* block until frozen */
                while (ctdb->freeze_mode[i] == CTDB_FREEZE_PENDING) {