summaryrefslogtreecommitdiffstats
path: root/ctdb/server/ctdb_lock.c
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2013-04-30 14:16:07 +1000
committerAmitay Isaacs <amitay@gmail.com>2013-05-24 09:06:39 +1000
commit65a9195916be5bb7f7efe3bac99c960c389b9d01 (patch)
treecbab17b7fb006b5ce1c5f3501d17977461e232f6 /ctdb/server/ctdb_lock.c
parenta5133d16e7275e76cfdd2fe8c790d137311cfc9a (diff)
downloadsamba-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.c23
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;