ubik: always prefer a dirty cache page for write transactions
authorMarc Dionne <marc.c.dionne@gmail.com>
Fri, 28 Jan 2011 00:07:32 +0000 (19:07 -0500)
committerDerrick Brashear <shadow@dementia.org>
Wed, 9 Feb 2011 03:04:08 +0000 (19:04 -0800)
commit296cf7d1630c57874b870e161bac5db9fe4dab48
tree7bf2245ea5f5c00670ba883c2ba93cdc5dfc1e40
parentbe4abb4ec83a47477b254f2b3375742c4efbb063
ubik: always prefer a dirty cache page for write transactions

If a write transaction is running concurrently with a read transaction,
a DRead in the write transaction may return a clean cache page brought
in by the read transaction, instead of a previously written dirty page
from the same transaction.  This can result in loss of the written data.

Fix by making sure there is not a dirty version of the requested page
before returning a clean one.

Bug spotted by Jeffrey Hutzelman.

Change-Id: I20543693c98218d8ec1f791508d9404043819376
Reviewed-on: http://gerrit.openafs.org/3764
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
src/ubik/disk.c