xvcb lock order violation
authorDerrick Brashear <shadow@dementix.org>
Mon, 22 Aug 2011 18:56:03 +0000 (14:56 -0400)
committerDerrick Brashear <shadow@dementix.org>
Wed, 31 Aug 2011 18:37:21 +0000 (11:37 -0700)
commit12fa5b859b857aaf0ab6975ebac0d4867d0ae0ff
treef5d549ff9528a2d9cb8d443296363dd878e1d9f8
parent24287ff0154c49a2563c9a08ff44ff72583095e4
xvcb lock order violation

afs_FlushVCBs(1) = xvcb, xserver (in that order)

afs_GetServer = xserver, xsrvAddr, (call afs_RemoveSrvAddr which calls
afs_FlushServer, which gets xvcb)

"nope". do a little dance to get xvcb, searching for a struct server to reuse
again if we had to block.

if you're curious:
Lock afs_xserver status: (reader_waitingwriter_waiting, write_locked(pid:1589 at:36), 3 waiters)
Lock afs_xvcb status: (none_waiting, write_locked(pid:0 at:273))
Lock afs_xsrvAddr status: (none_waiting, write_locked(pid:1589 at:116))

Change-Id: If295d0b9ce347c1cc24df12cd9934a30dce2a3c6
Reviewed-on: http://gerrit.openafs.org/5294
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Tested-by: Derrick Brashear <shadow@dementix.org>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
src/afs/afs_prototypes.h
src/afs/afs_server.c