diff options
author | Amitay Isaacs <amitay@gmail.com> | 2014-05-30 15:49:46 +1000 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2014-08-04 17:59:52 +0200 |
commit | e0d54594519de67b6f0d0ec003bc0327f70f026b (patch) | |
tree | fa7e521a68a2fc6be67865685e7972bf91e9b508 /ctdb | |
parent | 97a5c579574fb5702a743e07b896c9a0ec0acc4f (diff) | |
download | samba-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.c | 12 |
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); |