summaryrefslogtreecommitdiffstats
path: root/ctdb/server/ctdb_lock.c
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2013-08-02 10:51:45 +1000
committerAmitay Isaacs <amitay@gmail.com>2013-08-09 11:04:42 +1000
commit9ba793a80ff489ba5ec40b3a55bef5f97aac634e (patch)
tree6a3ad3d013271b169823cbd0a3e98c024624d27e /ctdb/server/ctdb_lock.c
parentb77fec93819ff5b8d33a5814b5d209c2f6f0066e (diff)
downloadsamba-9ba793a80ff489ba5ec40b3a55bef5f97aac634e.tar.gz
samba-9ba793a80ff489ba5ec40b3a55bef5f97aac634e.tar.xz
samba-9ba793a80ff489ba5ec40b3a55bef5f97aac634e.zip
locking: Move function find_lock_context() before ctdb_lock_schedule()
So that ctdb_lock_schedule() can call this function without requiring extra prototype declaration. Signed-off-by: Amitay Isaacs <amitay@gmail.com> (This used to be ctdb commit 68af5405acc123b5a90decd2123e2a02961a8fcf)
Diffstat (limited to 'ctdb/server/ctdb_lock.c')
-rw-r--r--ctdb/server/ctdb_lock.c106
1 files changed, 53 insertions, 53 deletions
diff --git a/ctdb/server/ctdb_lock.c b/ctdb/server/ctdb_lock.c
index 8886ed0e675..b313ed57358 100644
--- a/ctdb/server/ctdb_lock.c
+++ b/ctdb/server/ctdb_lock.c
@@ -649,6 +649,59 @@ static char **lock_helper_args(TALLOC_CTX *mem_ctx, struct lock_context *lock_ct
/*
+ * Find the lock context of a given type
+ */
+static struct lock_context *find_lock_context(struct lock_context *lock_list,
+ struct ctdb_db_context *ctdb_db,
+ TDB_DATA key,
+ uint32_t priority,
+ enum lock_type type)
+{
+ struct lock_context *lock_ctx;
+
+ /* Search active locks */
+ for (lock_ctx=lock_list; lock_ctx; lock_ctx=lock_ctx->next) {
+ if (lock_ctx->type != type) {
+ continue;
+ }
+
+ switch (lock_ctx->type) {
+ case LOCK_RECORD:
+ if (ctdb_db == lock_ctx->ctdb_db &&
+ key.dsize == lock_ctx->key.dsize &&
+ memcmp(key.dptr, lock_ctx->key.dptr, key.dsize) == 0) {
+ goto done;
+ }
+ break;
+
+ case LOCK_DB:
+ if (ctdb_db == lock_ctx->ctdb_db) {
+ goto done;
+ }
+ break;
+
+ case LOCK_ALLDB_PRIO:
+ if (priority == lock_ctx->priority) {
+ goto done;
+ }
+ break;
+
+ case LOCK_ALLDB:
+ goto done;
+ break;
+ }
+ }
+
+ /* Did not find the lock context we are searching for */
+ lock_ctx = NULL;
+
+done:
+ return lock_ctx;
+
+}
+
+
+/*
* Schedule a new lock child process
* Set up callback handler and timeout handler
*/
@@ -802,59 +855,6 @@ static void ctdb_lock_schedule(struct ctdb_context *ctdb)
/*
- * Find the lock context of a given type
- */
-static struct lock_context *find_lock_context(struct lock_context *lock_list,
- struct ctdb_db_context *ctdb_db,
- TDB_DATA key,
- uint32_t priority,
- enum lock_type type)
-{
- struct lock_context *lock_ctx;
-
- /* Search active locks */
- for (lock_ctx=lock_list; lock_ctx; lock_ctx=lock_ctx->next) {
- if (lock_ctx->type != type) {
- continue;
- }
-
- switch (lock_ctx->type) {
- case LOCK_RECORD:
- if (ctdb_db == lock_ctx->ctdb_db &&
- key.dsize == lock_ctx->key.dsize &&
- memcmp(key.dptr, lock_ctx->key.dptr, key.dsize) == 0) {
- goto done;
- }
- break;
-
- case LOCK_DB:
- if (ctdb_db == lock_ctx->ctdb_db) {
- goto done;
- }
- break;
-
- case LOCK_ALLDB_PRIO:
- if (priority == lock_ctx->priority) {
- goto done;
- }
- break;
-
- case LOCK_ALLDB:
- goto done;
- break;
- }
- }
-
- /* Did not find the lock context we are searching for */
- lock_ctx = NULL;
-
-done:
- return lock_ctx;
-
-}
-
-
-/*
* Lock record / db depending on type
*/
static struct lock_request *ctdb_lock_internal(struct ctdb_context *ctdb,