Coda File System

Coda Version Vectors

From: Sandeep Kumar <skumar_at_comp.nus.edu.sg>
Date: Mon, 19 Jul 2004 15:08:24 +0800
I hope that someone answers this as I've struggled with it for some time.

The maintenance of version vectors for detecting write/write conflicts 
in Coda as described in Tanenbaum and Van Steen's *Distributed Systems* 
book (p. 617) seems to be different than the scheme alluded to by Jim 
Kistler in his Ph.D. thesis (p. 45) which seems to be that of LOCUS 
(Scott Parker et al 1983). Yet, it seems (I may be totally incorrect) 
that both schemes detect conflicts correctly because the DAG induced by 
the partition graph works with both schemes (given the usual notion of 
vector dominance). If that's true, which one does Coda use and why does 
it prefer one over the other?

As an example, consider three replicas A, B, C and a file f. F's initial 
VV is [1,1,1] at all locations. A&B now get partitioned from C and make 
an update to f. What's the resulting VV's for f?

Tanenbaum & Van Steen:
  A: [2,2,1]
  B: [2,2,1]
  C: [1,1,1]

Scott Parker, Gerry Popek et. al:
  A: [2,1,1]
  B: [2,1,1]
  C: [1,1,1]

Here, I've (arbitrarily) considered the update in the A&B partition to 
be initiated by A. It could've been considered as an update by B.

Thanks a lot,
Sandeep Kumar
Received on 2004-07-19 03:12:07