ctdb-recoverd: Add slightly more abstraction for disabling takeover runs
authorMartin Schwenke <martin@meltin.net>
Fri, 6 Feb 2015 02:05:12 +0000 (13:05 +1100)
committerAmitay Isaacs <amitay@samba.org>
Tue, 7 Apr 2015 05:43:13 +0000 (07:43 +0200)
Factor out new function srvid_disable_and_reply(), which can be
re-used.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
ctdb/server/ctdb_recoverd.c

index 09b776fbc6c11be1a037221099173721bc42c671..d1beb3d064d86ea541163cd2e10f8d8fb89ba2ac 100644 (file)
@@ -2560,12 +2560,10 @@ static void recd_update_ip_handler(struct ctdb_context *ctdb, uint64_t srvid,
        update_ip_assignment_tree(rec->ctdb, ip);
 }
 
-static void disable_takeover_runs_handler(struct ctdb_context *ctdb,
-                                         uint64_t srvid, TDB_DATA data,
-                                         void *private_data)
+static void srvid_disable_and_reply(struct ctdb_context *ctdb,
+                                   TDB_DATA data,
+                                   struct ctdb_op_state *op_state)
 {
-       struct ctdb_recoverd *rec = talloc_get_type(private_data,
-                                                   struct ctdb_recoverd);
        struct srvid_request_data *r;
        uint32_t timeout;
        TDB_DATA result;
@@ -2586,7 +2584,7 @@ static void disable_takeover_runs_handler(struct ctdb_context *ctdb,
        r = (struct srvid_request_data *)data.dptr;
        timeout = r->data;
 
-       ret = ctdb_op_disable(rec->takeover_run, ctdb->ev, timeout);
+       ret = ctdb_op_disable(op_state, ctdb->ev, timeout);
        if (ret != 0) {
                goto done;
        }
@@ -2599,6 +2597,16 @@ done:
        srvid_request_reply(ctdb, (struct srvid_request *)r, result);
 }
 
+static void disable_takeover_runs_handler(struct ctdb_context *ctdb,
+                                         uint64_t srvid, TDB_DATA data,
+                                         void *private_data)
+{
+       struct ctdb_recoverd *rec = talloc_get_type(private_data,
+                                                   struct ctdb_recoverd);
+
+       srvid_disable_and_reply(ctdb, data, rec->takeover_run);
+}
+
 /* Backward compatibility for this SRVID - call
  * disable_takeover_runs_handler() instead
  */