summaryrefslogtreecommitdiff
path: root/ctdb
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2014-05-29 17:27:32 +1000
committerVolker Lendecke <vl@samba.org>2014-08-04 17:59:52 +0200
commitc9664b4b17660c03ed96072a9f5392dbb0800f2c (patch)
tree1a6218590514d546e8ce16e95c24f87711580c39 /ctdb
parent19b3810b61e4856dc5ab6b8a5a785b836172f01e (diff)
downloadsamba-c9664b4b17660c03ed96072a9f5392dbb0800f2c.tar.gz
ctdb-locking: Schedule the next possible lock based on per-db limit
This prevents searching through active lock requests for every pending lock request to check if the pending lock request can be scheduled or not. The locks are scheduled in strict first-in-first-out order. Signed-off-by: Amitay Isaacs <amitay@gmail.com> Reviewed-by: Volker Lendecke <vl@samba.org>
Diffstat (limited to 'ctdb')
-rw-r--r--ctdb/server/ctdb_lock.c20
1 files changed, 5 insertions, 15 deletions
diff --git a/ctdb/server/ctdb_lock.c b/ctdb/server/ctdb_lock.c
index a54f0bc8f6e..ee9c0c15fa5 100644
--- a/ctdb/server/ctdb_lock.c
+++ b/ctdb/server/ctdb_lock.c
@@ -715,7 +715,7 @@ done:
*/
static void ctdb_lock_schedule(struct ctdb_context *ctdb)
{
- struct lock_context *lock_ctx, *next_ctx, *active_ctx;
+ struct lock_context *lock_ctx, *next_ctx;
int ret;
TALLOC_CTX *tmp_ctx;
const char *helper = BINDIR "/ctdb_lock_helper";
@@ -752,21 +752,11 @@ static void ctdb_lock_schedule(struct ctdb_context *ctdb)
}
talloc_free(lock_ctx);
} else {
- active_ctx = find_lock_context(ctdb->lock_current, lock_ctx->ctdb_db,
- lock_ctx->key, lock_ctx->priority,
- lock_ctx->type, lock_ctx->key_hash);
- if (active_ctx == NULL) {
- if (lock_ctx->ctdb_db == NULL ||
- lock_ctx->ctdb_db->lock_num_current < MAX_LOCK_PROCESSES_PER_DB) {
- /* Found a lock context with lock requests */
- break;
- }
+ if (lock_ctx->ctdb_db == NULL ||
+ lock_ctx->ctdb_db->lock_num_current < MAX_LOCK_PROCESSES_PER_DB) {
+ /* Found a lock context with lock requests */
+ break;
}
-
- /* There is already a child waiting for the
- * same key. So don't schedule another child
- * just yet.
- */
}
lock_ctx = next_ctx;
}