Coda File System

Re: local/global conflict with only 1 client!!

From: Greg Troxel <gdt_at_ir.bbn.com>
Date: Mon, 16 Oct 2000 12:00:59 -0400
  There is a frozen state for already sent CML entries, although I believe
  they are `defrosted' in some cases. There is also the issue that the
  shadow copies of files associated with Store CML's are not part of the
  cml entry, but part of the FSO. This means we can currently only have a
  single Store record in our log.

This is unfortunate, since it seems like being flakily connected has
the potential to cause conflicts unnecessarily.  Allow me to ramble
about fixing this:

The client has said

based on VV#1, Store[0]
      causes VV#2
based on VV#1, Store[400]

The problem is that the client doesn't know that the first store
produced VV#2, and thus doesn't list VV#2.

1) A fix might be for the responses from the server with the new VV to
be sent reliably (retained at the server for retransmission the next
time the client wakes up).

2)  Another fix might be for
the server to know that VV1->VV2 was done by client A, and that
therefore client A asking for a store based on vv1 is ok.
This trick doesn't work if clients change IP addresses before
reintegrating.

3) If the Store[0] has a client-generated transaction id, that can be
stored and used as a proxy for the VV, so that the new store can say
Store[400] based on VV#1 as modified by transaction id list {....}

4) Not coalescing the store operations might work if one observes that
if a client does 3 stores, only the last one's _contents_ matter.
However, the first store[0] when retransmitted has to look like a
retransmission of the original (back to transaction ids, but avoiding
having to send a list with the subsequent stores).


  Well, ip-firewalls come to mind as more common introducers of similar
  one-way connectivity.

I suppose, but typically they simply inhibit operation so you give
up.  They do age out state and thus time out connections, but this
problem requires an outgoing packet and then a repeatedly lost
incoming packet for the next 10-20 seconds.

Another observation is that many programs provoke more operations than
seem necessary - I have started running even well-connected machines
with 'cfs wd -age 10' to get some coalescing to avoid this.
Received on 2000-10-16 12:02:16