struct timeval last_reported_time;
};
+struct ctdb_recovery_lock_handle;
+
/*
private state of recovery daemon
*/
uint32_t *force_rebalance_nodes;
struct ctdb_node_capabilities *caps;
bool frozen_on_inactive;
- struct ctdb_cluster_mutex_handle *recovery_lock_handle;
+ struct ctdb_recovery_lock_handle *recovery_lock_handle;
};
#define CONTROL_TIMEOUT() timeval_current_ofs(ctdb->tunable.recover_timeout, 0)
bool done;
bool locked;
double latency;
+ struct ctdb_cluster_mutex_handle *h;
};
static void take_reclock_handler(char status,
return false;
};
- h = ctdb_cluster_mutex(rec,
+ h = ctdb_cluster_mutex(s,
ctdb,
ctdb->recovery_lock,
0,
if (! s->locked) {
talloc_free(s);
- talloc_free(h);
return false;
}
- rec->recovery_lock_handle = h;
+ rec->recovery_lock_handle = s;
+ s->h = h;
ctdb_ctrl_report_recd_lock_latency(ctdb,
CONTROL_TIMEOUT(),
s->latency);
- talloc_free(s);
-
return true;
}