From: Amitay Isaacs Date: Tue, 15 Jul 2014 04:13:25 +0000 (+1000) Subject: ctdb-locking: Add DB lock requests to head of the pending queue X-Git-Url: http://git.samba.org/?a=commitdiff_plain;h=7189437be447d33038eb26bca055b1025cebacd3;p=obnox%2Fsamba%2Fsamba-obnox.git ctdb-locking: Add DB lock requests to head of the pending queue This allows to schedule DB locks quickly without having to scan through the pending lock requests. Signed-off-by: Amitay Isaacs Reviewed-by: Volker Lendecke --- diff --git a/ctdb/server/ctdb_lock.c b/ctdb/server/ctdb_lock.c index b9740857c1d..1100c7c17ab 100644 --- a/ctdb/server/ctdb_lock.c +++ b/ctdb/server/ctdb_lock.c @@ -858,7 +858,14 @@ static struct lock_request *ctdb_lock_internal(struct ctdb_context *ctdb, lock_ctx->request = request; lock_ctx->child = -1; - DLIST_ADD_END(ctdb->lock_pending, lock_ctx, NULL); + /* Non-record locks are required by recovery and should be scheduled + * immediately, so keep them at the head of the pending queue. + */ + if (lock_ctx->type == LOCK_RECORD) { + DLIST_ADD_END(ctdb->lock_pending, lock_ctx, NULL); + } else { + DLIST_ADD(ctdb->lock_pending, lock_ctx); + } CTDB_INCREMENT_STAT(ctdb, locks.num_pending); if (ctdb_db) { CTDB_INCREMENT_DB_STAT(ctdb_db, locks.num_pending);