diff options
author | Martin Schwenke <martin@meltin.net> | 2014-12-09 13:50:22 +1100 |
---|---|---|
committer | Amitay Isaacs <amitay@samba.org> | 2015-02-13 07:19:07 +0100 |
commit | 72701be663ddb265320a022a22130a3437bbf6bc (patch) | |
tree | 5264494ec2b8dce163d428bee241583c40caf9a0 /ctdb | |
parent | 4d3b52f1cec46f66f8d0827bc8f458cd8c86b5a5 (diff) | |
download | samba-72701be663ddb265320a022a22130a3437bbf6bc.tar.gz samba-72701be663ddb265320a022a22130a3437bbf6bc.tar.xz samba-72701be663ddb265320a022a22130a3437bbf6bc.zip |
ctdb-recoverd: New function ctdb_recovery_have_lock()
True if this recovery daemon holds the lock.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
Diffstat (limited to 'ctdb')
-rw-r--r-- | ctdb/include/ctdb_private.h | 1 | ||||
-rw-r--r-- | ctdb/server/ctdb_recover.c | 5 | ||||
-rw-r--r-- | ctdb/server/ctdb_recoverd.c | 4 |
3 files changed, 8 insertions, 2 deletions
diff --git a/ctdb/include/ctdb_private.h b/ctdb/include/ctdb_private.h index 3d6f487ff5..03130d6602 100644 --- a/ctdb/include/ctdb_private.h +++ b/ctdb/include/ctdb_private.h @@ -1259,6 +1259,7 @@ void ctdb_release_all_ips(struct ctdb_context *ctdb); void set_nonblocking(int fd); void set_close_on_exec(int fd); +bool ctdb_recovery_have_lock(struct ctdb_context *ctdb); bool ctdb_recovery_lock(struct ctdb_context *ctdb, bool keep); int ctdb_set_recovery_lock_file(struct ctdb_context *ctdb, const char *file); diff --git a/ctdb/server/ctdb_recover.c b/ctdb/server/ctdb_recover.c index cd77418728..1f1e50aa29 100644 --- a/ctdb/server/ctdb_recover.c +++ b/ctdb/server/ctdb_recover.c @@ -721,6 +721,11 @@ int32_t ctdb_control_set_recmode(struct ctdb_context *ctdb, } +bool ctdb_recovery_have_lock(struct ctdb_context *ctdb) +{ + return ctdb->recovery_lock_fd != -1; +} + /* try and get the recovery lock in shared storage - should only work on the recovery master recovery daemon. Anywhere else is a bug diff --git a/ctdb/server/ctdb_recoverd.c b/ctdb/server/ctdb_recoverd.c index 6ea381dbc6..3d7c43240a 100644 --- a/ctdb/server/ctdb_recoverd.c +++ b/ctdb/server/ctdb_recoverd.c @@ -2679,7 +2679,7 @@ static void election_handler(struct ctdb_context *ctdb, uint64_t srvid, /*unban_all_nodes(ctdb);*/ return; } - + /* we didn't win */ talloc_free(rec->send_election_te); rec->send_election_te = NULL; @@ -2687,7 +2687,7 @@ static void election_handler(struct ctdb_context *ctdb, uint64_t srvid, if (ctdb->recovery_lock_file != NULL) { /* Release the recovery lock file */ if (em->pnn != ctdb->pnn && - ctdb->recovery_lock_fd != -1) { + ctdb_recovery_have_lock(ctdb)) { DEBUG(DEBUG_NOTICE, ("Release the recovery lock\n")); close(ctdb->recovery_lock_fd); ctdb->recovery_lock_fd = -1; |