ctdb-locking: Add mark/unmark functions for a single database
authorAmitay Isaacs <amitay@gmail.com>
Thu, 10 Sep 2015 03:24:43 +0000 (13:24 +1000)
committerAmitay Isaacs <amitay@samba.org>
Wed, 7 Oct 2015 12:53:27 +0000 (14:53 +0200)
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
ctdb/include/ctdb_private.h
ctdb/server/ctdb_lock.c

index b6f7263b8b7414b4d6418b88c1d51f350f5b01a2..61d5c9f59533421c88b0873cd7b101d8e28598ed 100644 (file)
@@ -1485,6 +1485,9 @@ int ctdb_db_iterator(struct ctdb_context *ctdb, ctdb_db_handler_t handler,
 int ctdb_lockall_mark_prio(struct ctdb_context *ctdb, uint32_t priority);
 int ctdb_lockall_unmark_prio(struct ctdb_context *ctdb, uint32_t priority);
 
+int ctdb_lockdb_mark(struct ctdb_db_context *ctdb_db);
+int ctdb_lockdb_unmark(struct ctdb_db_context *ctdb_db);
+
 struct lock_request *ctdb_lock_record(TALLOC_CTX *mem_ctx,
                                      struct ctdb_db_context *ctdb_db,
                                      TDB_DATA key,
index 9494f9f14f348f55f84c7e7efe3b0cfdcf217a38..d8d4f5a6e3c030f2940acb923a3449d8dec6cc81 100644 (file)
@@ -191,6 +191,17 @@ static int db_lock_mark_handler(struct ctdb_db_context *ctdb_db,
        return 0;
 }
 
+int ctdb_lockdb_mark(struct ctdb_db_context *ctdb_db)
+{
+       if (!ctdb_db_frozen(ctdb_db)) {
+               DEBUG(DEBUG_ERR,
+                     ("Attempt to mark database locked when not frozen\n"));
+               return -1;
+       }
+
+       return db_lock_mark_handler(ctdb_db, NULL);
+}
+
 int ctdb_lockall_mark_prio(struct ctdb_context *ctdb, uint32_t priority)
 {
        /*
@@ -250,6 +261,17 @@ static int db_lock_unmark_handler(struct ctdb_db_context *ctdb_db,
        return 0;
 }
 
+int ctdb_lockdb_unmark(struct ctdb_db_context *ctdb_db)
+{
+       if (!ctdb_db_frozen(ctdb_db)) {
+               DEBUG(DEBUG_ERR,
+                     ("Attempt to unmark database locked when not frozen\n"));
+               return -1;
+       }
+
+       return db_lock_unmark_handler(ctdb_db, NULL);
+}
+
 int ctdb_lockall_unmark_prio(struct ctdb_context *ctdb, uint32_t priority)
 {
        /*
@@ -359,7 +381,7 @@ static void process_callbacks(struct lock_context *lock_ctx, bool locked)
                        break;
 
                case LOCK_DB:
-                       tdb_lockall_mark(lock_ctx->ctdb_db->ltdb->tdb);
+                       ctdb_lockdb_mark(lock_ctx->ctdb_db);
                        break;
 
                case LOCK_ALLDB_PRIO:
@@ -396,7 +418,7 @@ static void process_callbacks(struct lock_context *lock_ctx, bool locked)
                        break;
 
                case LOCK_DB:
-                       tdb_lockall_unmark(lock_ctx->ctdb_db->ltdb->tdb);
+                       ctdb_lockdb_unmark(lock_ctx->ctdb_db);
                        break;
 
                case LOCK_ALLDB_PRIO: