diff options
author | Amitay Isaacs <amitay@gmail.com> | 2013-08-02 10:51:45 +1000 |
---|---|---|
committer | Amitay Isaacs <amitay@gmail.com> | 2013-08-09 11:04:42 +1000 |
commit | 9ba793a80ff489ba5ec40b3a55bef5f97aac634e (patch) | |
tree | 6a3ad3d013271b169823cbd0a3e98c024624d27e /ctdb/server/ctdb_lock.c | |
parent | b77fec93819ff5b8d33a5814b5d209c2f6f0066e (diff) | |
download | samba-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.c | 106 |
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, |