diff options
author | Amitay Isaacs <amitay@gmail.com> | 2014-05-29 17:27:32 +1000 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2014-08-04 17:59:52 +0200 |
commit | c9664b4b17660c03ed96072a9f5392dbb0800f2c (patch) | |
tree | 1a6218590514d546e8ce16e95c24f87711580c39 /ctdb | |
parent | 19b3810b61e4856dc5ab6b8a5a785b836172f01e (diff) | |
download | samba-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.c | 20 |
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; } |