From 83542d973ca771353109c7da4b0391d6ba910f53 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 16 Feb 2010 12:31:58 +0100 Subject: s3: Slightly increase parallelism in g_lock There's no need to still hold the g_lock tdb-level lock while telling the waiters to retry --- source3/lib/g_lock.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'source3/lib') diff --git a/source3/lib/g_lock.c b/source3/lib/g_lock.c index 33ebe94803..add670c154 100644 --- a/source3/lib/g_lock.c +++ b/source3/lib/g_lock.c @@ -527,6 +527,8 @@ static NTSTATUS g_lock_force_unlock(struct g_lock_ctx *ctx, const char *name, goto done; } + TALLOC_FREE(rec); + if ((lock_type & G_LOCK_PENDING) == 0) { int num_wakeups = 0; @@ -566,9 +568,13 @@ static NTSTATUS g_lock_force_unlock(struct g_lock_ctx *ctx, const char *name, } } done: + /* + * For the error path, TALLOC_FREE(rec) as well. In the good + * path we have already freed it. + */ + TALLOC_FREE(rec); TALLOC_FREE(locks); - TALLOC_FREE(rec); return status; } -- cgit