summaryrefslogtreecommitdiff
path: root/ctdb
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2014-05-30 15:49:46 +1000
committerVolker Lendecke <vl@samba.org>2014-08-04 17:59:52 +0200
commite0d54594519de67b6f0d0ec003bc0327f70f026b (patch)
treefa7e521a68a2fc6be67865685e7972bf91e9b508 /ctdb
parent97a5c579574fb5702a743e07b896c9a0ec0acc4f (diff)
downloadsamba-e0d54594519de67b6f0d0ec003bc0327f70f026b.tar.gz
ctdb-locking: Allocate lock request soon after allocating lock context
This avoids extra work in case lock request allocation fails. 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.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/ctdb/server/ctdb_lock.c b/ctdb/server/ctdb_lock.c
index c07ccd68f21..4cdad18e500 100644
--- a/ctdb/server/ctdb_lock.c
+++ b/ctdb/server/ctdb_lock.c
@@ -838,6 +838,11 @@ static struct lock_request *ctdb_lock_internal(struct ctdb_context *ctdb,
return NULL;
}
+ if ((request = talloc_zero(lock_ctx, struct lock_request)) == NULL) {
+ talloc_free(lock_ctx);
+ return NULL;
+ }
+
lock_ctx->type = type;
lock_ctx->ctdb = ctdb;
lock_ctx->ctdb_db = ctdb_db;
@@ -856,6 +861,7 @@ static struct lock_request *ctdb_lock_internal(struct ctdb_context *ctdb,
lock_ctx->priority = priority;
lock_ctx->auto_mark = auto_mark;
+ lock_ctx->request = request;
lock_ctx->child = -1;
DLIST_ADD_END(ctdb->lock_pending, lock_ctx, NULL);
@@ -868,17 +874,11 @@ static struct lock_request *ctdb_lock_internal(struct ctdb_context *ctdb,
/* Start the timer when we activate the context */
lock_ctx->start_time = timeval_current();
- if ((request = talloc_zero(lock_ctx, struct lock_request)) == NULL) {
- talloc_free(lock_ctx);
- return NULL;
- }
-
request->lctx = lock_ctx;
request->callback = callback;
request->private_data = private_data;
talloc_set_destructor(request, ctdb_lock_request_destructor);
- lock_ctx->request = request;
ctdb_lock_schedule(ctdb);