ubik: always hold DB lock for urecovery_ResetState()
authorMarc Dionne <marc.c.dionne@gmail.com>
Sat, 16 Apr 2011 18:19:57 +0000 (14:19 -0400)
committerDerrick Brashear <shadow@dementia.org>
Wed, 27 Apr 2011 00:36:18 +0000 (17:36 -0700)
commit44801d157e6fd0933f37f0fc6451e37bdca285f3
treeab218603b4c99f97347d84a0d1ed7f155b295e22
parentb2e6b426e6351da8b13e1d8b55be220fc98df5e5
ubik: always hold DB lock for urecovery_ResetState()

ubik_ResetState requires callers to hold the DB lock, since it modifies
urecovery_state.  All callers of ubeacon_AmSyncSite outside of the beacon
package hold the DB lock, but calls from the beacon thread do not, and
can't block on getting the DB lock if we're sync site.

Add a beacon internal version of ubeacon_AmSyncSite that skips the
call to ResetState, and have the callers take the DB lock and call
ResetState themselves if needed.  They can take the lock in this case
because we know we're not the sync site.  Refactor the exported
ubeacon_AmSyncSite in terms of this new function.

Change-Id: I88b231010dd52adf6e43a17802e83d12568afc6b
Reviewed-on: http://gerrit.openafs.org/4490
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
src/ubik/beacon.c