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>
Fri, 16 Dec 2011 11:04:17 +0000 (03:04 -0800)
commitf2bf60ed4f1323cd6f74f2f01114f7e4f714db53
tree9d14bdd673c42d38468de8b6e8311644b3e2d5b5
parent7c442bdb290abb30f7a39183cca9b20b088bb73e
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))

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>
(cherry picked from commit 12fa5b859b857aaf0ab6975ebac0d4867d0ae0ff)

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