summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2013-04-30 14:07:11 +1000
committerAmitay Isaacs <amitay@gmail.com>2013-05-24 09:06:39 +1000
commited359bb1ead0bcd35963ff1bf55442f0ef5783cc (patch)
tree83b19b31e4276baacfbf45fcfd7051ea89b23d5e
parentc5c79d63f2e51f1e38dc48880d2cb02bbd5312be (diff)
downloadsamba-ed359bb1ead0bcd35963ff1bf55442f0ef5783cc.tar.gz
samba-ed359bb1ead0bcd35963ff1bf55442f0ef5783cc.tar.xz
samba-ed359bb1ead0bcd35963ff1bf55442f0ef5783cc.zip
locking: Add handler function for marking a database
Signed-off-by: Amitay Isaacs <amitay@gmail.com> (This used to be ctdb commit f120e40533780e02ff1cdc41cc6d3af1c4c83258)
-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 f6220e0203..68409e7c85 100644
--- a/ctdb/server/ctdb_lock.c
+++ b/ctdb/server/ctdb_lock.c
@@ -242,6 +242,29 @@ static int ctdb_unlockall(struct ctdb_context *ctdb)
/*
* lock all databases - mark only
*/
+static int db_lock_mark_handler(struct ctdb_db_context *ctdb_db, uint32_t priority,
+ void *private_data)
+{
+ int tdb_transaction_write_lock_mark(struct tdb_context *);
+
+ DEBUG(DEBUG_INFO, ("marking locked database %s, priority:%u\n",
+ ctdb_db->db_name, priority));
+
+ if (tdb_transaction_write_lock_mark(ctdb_db->ltdb->tdb) != 0) {
+ DEBUG(DEBUG_ERR, ("Failed to mark (transaction lock) database %s\n",
+ ctdb_db->db_name));
+ return -1;
+ }
+
+ if (tdb_lockall_mark(ctdb_db->ltdb->tdb) != 0) {
+ DEBUG(DEBUG_ERR, ("Failed to mark (all lock) database %s\n",
+ ctdb_db->db_name));
+ return -1;
+ }
+
+ return 0;
+}
+
int ctdb_lockall_mark_prio(struct ctdb_context *ctdb, uint32_t priority)
{
struct ctdb_db_context *ctdb_db;