summaryrefslogtreecommitdiff
path: root/ctdb/server/ctdb_lock.c
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2014-08-04 13:57:12 +0000
committerAmitay Isaacs <amitay@samba.org>2014-08-06 14:44:31 +0200
commite185ff22caf430f680f8bad1edf14bc98dd7c64e (patch)
tree4d8861bbff0186c330981953d403c4dea8bdfffe /ctdb/server/ctdb_lock.c
parent9f596c17c7d255213df6201d4d489df1580faef4 (diff)
downloadsamba-e185ff22caf430f680f8bad1edf14bc98dd7c64e.tar.gz
ctdb-locking: Simplify ctdb_find_lock_context()
I like early returns that avoid else branches :-) Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Amitay Isaacs <amitay@gmail.com> Autobuild-User(master): Amitay Isaacs <amitay@samba.org> Autobuild-Date(master): Wed Aug 6 14:44:31 CEST 2014 on sn-devel-104
Diffstat (limited to 'ctdb/server/ctdb_lock.c')
-rw-r--r--ctdb/server/ctdb_lock.c67
1 files changed, 33 insertions, 34 deletions
diff --git a/ctdb/server/ctdb_lock.c b/ctdb/server/ctdb_lock.c
index a7df6cf6801..72352af8466 100644
--- a/ctdb/server/ctdb_lock.c
+++ b/ctdb/server/ctdb_lock.c
@@ -664,51 +664,50 @@ struct lock_context *ctdb_find_lock_context(struct ctdb_context *ctdb)
struct ctdb_db_context *ctdb_db;
/* First check if there are database lock requests */
- lock_ctx = ctdb->lock_pending;
- while (lock_ctx != NULL) {
- next_ctx = lock_ctx->next;
- if (! lock_ctx->request) {
- DEBUG(DEBUG_INFO, ("Removing lock context without lock request\n"));
- DLIST_REMOVE(ctdb->lock_pending, lock_ctx);
- CTDB_DECREMENT_STAT(ctdb, locks.num_pending);
- if (lock_ctx->ctdb_db) {
- CTDB_DECREMENT_DB_STAT(lock_ctx->ctdb_db, locks.num_pending);
- }
- talloc_free(lock_ctx);
- } else {
- /* Found a lock context with lock requests */
- break;
+
+ for (lock_ctx = ctdb->lock_pending; lock_ctx != NULL;
+ lock_ctx = next_ctx) {
+
+ if (lock_ctx->request != NULL) {
+ /* Found a lock context with a request */
+ return lock_ctx;
}
- lock_ctx = next_ctx;
- }
- if (lock_ctx) {
- return lock_ctx;
+ next_ctx = lock_ctx->next;
+
+ DEBUG(DEBUG_INFO, ("Removing lock context without lock "
+ "request\n"));
+ DLIST_REMOVE(ctdb->lock_pending, lock_ctx);
+ CTDB_DECREMENT_STAT(ctdb, locks.num_pending);
+ if (lock_ctx->ctdb_db) {
+ CTDB_DECREMENT_DB_STAT(lock_ctx->ctdb_db,
+ locks.num_pending);
+ }
+ talloc_free(lock_ctx);
}
/* Next check database queues */
for (ctdb_db = ctdb->db_list; ctdb_db; ctdb_db = ctdb_db->next) {
- if (ctdb_db->lock_num_current == ctdb->tunable.lock_processes_per_db) {
+ if (ctdb_db->lock_num_current ==
+ ctdb->tunable.lock_processes_per_db) {
continue;
}
- lock_ctx = ctdb_db->lock_pending;
- while (lock_ctx != NULL) {
+
+ for (lock_ctx = ctdb_db->lock_pending; lock_ctx != NULL;
+ lock_ctx = next_ctx) {
+
next_ctx = lock_ctx->next;
- if (! lock_ctx->request) {
- DEBUG(DEBUG_INFO, ("Removing lock context without lock request\n"));
- DLIST_REMOVE(ctdb_db->lock_pending, lock_ctx);
- CTDB_DECREMENT_STAT(ctdb, locks.num_pending);
- CTDB_DECREMENT_DB_STAT(ctdb_db, locks.num_pending);
- talloc_free(lock_ctx);
- } else {
- break;
- }
- lock_ctx = next_ctx;
- }
+ if (lock_ctx->request != NULL) {
+ return lock_ctx;
+ }
- if (lock_ctx) {
- return lock_ctx;
+ DEBUG(DEBUG_INFO, ("Removing lock context without "
+ "lock request\n"));
+ DLIST_REMOVE(ctdb_db->lock_pending, lock_ctx);
+ CTDB_DECREMENT_STAT(ctdb, locks.num_pending);
+ CTDB_DECREMENT_DB_STAT(ctdb_db, locks.num_pending);
+ talloc_free(lock_ctx);
}
}