ubik: Introduce version lock
authorMarc Dionne <marc.c.dionne@gmail.com>
Fri, 4 Feb 2011 01:51:06 +0000 (20:51 -0500)
committerDerrick Brashear <shadow@dementia.org>
Tue, 5 Apr 2011 18:21:45 +0000 (11:21 -0700)
commite4ac552ab79be21d90397079eaf6be7050497752
treef70bf1fa8ae11e3dca0972ca1ed4158759116bce
parent5ceea5bbc6a3a69012d625d53149909490311e6c
ubik: Introduce version lock

The "version" lock is a new lock that protects the database version
information.  The goal is to allow the beacon thread to use the
protected values without blocking for an extended period of time,
which could occur if it was using the database lock.

Reading requires holding either lock, while writing requires holding
both locks.

The following values are protected:
ubik_epochTime
db->version
db->flags
db->tidCounter
db->writeTidCounter

Based on analysis and design work from Jeffrey Hutzelman.

Change-Id: Ib6e67360807eed8c36e35ec27d1eb938ac899e22
Reviewed-on: http://gerrit.openafs.org/4158
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
src/ubik/beacon.c
src/ubik/disk.c
src/ubik/recovery.c
src/ubik/remote.c
src/ubik/ubik.c
src/ubik/ubik.p.h
src/ubik/vote.c