diff options
author | Volker Lendecke <vl@samba.org> | 2010-02-16 12:31:58 +0100 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2010-04-01 09:39:18 +0200 |
commit | e46c217efea9ed0a67fbb0aa75303be12b5e19fa (patch) | |
tree | 8e2145507934fab20540cdcd881d9e6f4e21aab3 /source3/lib | |
parent | fc4aa05714fb8c87e27f97d5bba7cbe040ba2f81 (diff) | |
download | samba-e46c217efea9ed0a67fbb0aa75303be12b5e19fa.tar.gz |
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
(cherry picked from commit 83542d973ca771353109c7da4b0391d6ba910f53)
(cherry picked from commit eb15655fe1fb71fb7145ce9f479cc112a459f72e)
Diffstat (limited to 'source3/lib')
-rw-r--r-- | source3/lib/g_lock.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/source3/lib/g_lock.c b/source3/lib/g_lock.c index 33ebe948038..add670c154d 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; } |