The following commit has been merged in the master branch:
commit 11efae8362c5c73cdac19ef9f1c5e7f9c33883d8
Author: Simon Wilkinson <[email protected]>
Date: Mon Aug 25 16:25:43 2014 +0100
ubik: Don't leak UBIK_VERSION_LOCK if udisk_LogEnd fails
If the call to udisk_LogEnd() fails (probably due to an I/O error)
don't leak the UBIK_VERSION_LOCK.
This is the possible cause of a vlserver deadlock, which had
approximately 4800 threads blocked. Analysis of backtrace of all
of these threads showed that all blocked threads were waiting in
ubik.c:555 (blocked on DBHOLD) with the exception of:
One in beacon.c:388 (blocked on UBIK_VERSION_LOCK)
One in recovery.c:503 (blocked on DBHOLD)
One in ubik.c:125 (blocked on DBHOLD)
One in ubik.c:585 (blocked on UBIK_VERSION_LOCK)
The last of these is the critical one, because it already holds
the lock that DBHOLD waits on - so despite the vast majority of
threads being blocked in DBHOLD, it's actually UBIK_VERSION_LOCK
that we're waiting on.
There is no sign of a thread which is still active which currently
holds UBIK_VERSION_LOCK.
Change-Id: I1627b448d359152237912d4d78c9fa52c7149aa0
Reviewed-on: http://gerrit.openafs.org/11427
Tested-by: BuildBot <[email protected]>
Reviewed-by: Perry Ruiter <[email protected]>
Reviewed-by: Chas Williams - CONTRACTOR <[email protected]>
Reviewed-by: Jeffrey Altman <[email protected]>
src/ubik/disk.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
--
OpenAFS Master Repository
_______________________________________________
OpenAFS-cvs mailing list
[email protected]
https://lists.openafs.org/mailman/listinfo/openafs-cvs