diff options
author | Amitay Isaacs <amitay@gmail.com> | 2013-04-30 14:16:07 +1000 |
---|---|---|
committer | Amitay Isaacs <amitay@gmail.com> | 2013-05-24 09:06:39 +1000 |
commit | 65a9195916be5bb7f7efe3bac99c960c389b9d01 (patch) | |
tree | cbab17b7fb006b5ce1c5f3501d17977461e232f6 /ctdb/server/ctdb_lock.c | |
parent | a5133d16e7275e76cfdd2fe8c790d137311cfc9a (diff) | |
download | samba-65a9195916be5bb7f7efe3bac99c960c389b9d01.tar.gz samba-65a9195916be5bb7f7efe3bac99c960c389b9d01.tar.xz samba-65a9195916be5bb7f7efe3bac99c960c389b9d01.zip |
locking: Add handler function for unmarking a database
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
(This used to be ctdb commit adc113055de98fae276f9b501aff5c03cd25ddc8)
Diffstat (limited to 'ctdb/server/ctdb_lock.c')
-rw-r--r-- | ctdb/server/ctdb_lock.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/ctdb/server/ctdb_lock.c b/ctdb/server/ctdb_lock.c index 6bc1a100ceb..30be27bd3f0 100644 --- a/ctdb/server/ctdb_lock.c +++ b/ctdb/server/ctdb_lock.c @@ -299,6 +299,29 @@ static int ctdb_lockall_mark(struct ctdb_context *ctdb) /* * lock all databases - unmark only */ +static int db_lock_unmark_handler(struct ctdb_db_context *ctdb_db, uint32_t priority, + void *private_data) +{ + int tdb_transaction_write_lock_unmark(struct tdb_context *); + + DEBUG(DEBUG_INFO, ("unmarking locked database %s, priority:%u\n", + ctdb_db->db_name, priority)); + + if (tdb_transaction_write_lock_unmark(ctdb_db->ltdb->tdb) != 0) { + DEBUG(DEBUG_ERR, ("Failed to unmark (transaction lock) database %s\n", + ctdb_db->db_name)); + return -1; + } + + if (tdb_lockall_unmark(ctdb_db->ltdb->tdb) != 0) { + DEBUG(DEBUG_ERR, ("Failed to unmark (all lock) database %s\n", + ctdb_db->db_name)); + return -1; + } + + return 0; +} + int ctdb_lockall_unmark_prio(struct ctdb_context *ctdb, uint32_t priority) { struct ctdb_db_context *ctdb_db; |