Coda File System

Re: Yet another reintegration problem

From: Jan Harkes <jaharkes_at_cs.cmu.edu>
Date: Fri, 12 Apr 2002 13:46:17 -0400
On Fri, Apr 12, 2002 at 06:14:45PM +0200, bruno wrote:
> Here is my scenario:
> In a mounted volume (ie /coda/test), a file will be modified by a
> disconnected client but also modified on the server. That gives
> something like (client-A and client-B are initially connected):
> 
> client-A: cfs wd ; cfs disconnect
> client-A: modify /coda/test/foo
> client-B: modify /coda/test/foo
> client-A: cfs reconnect ; cfs wr
> 
> First thing that's look suspicious after write reconnect in the
> venus.log:
> 
> ...
> ClientModifyLog::COP1: (test), 1036 bytes, returns 198, index = 0
> ...
> 
> The error code 198 (unknown on Linux) is then propagated as the result
> of reintegration.

198 is EINCONS, inconsistency detected.

> As expected, /coda/test is now a dangling link:
> 
> lr--r--r  root   test -> @7f000001.ffffffff.00080000
> 
> but trying repair just don't work:
> 
> repair > beginrepair
> Pathname of object in conflict? []: /coda/test
> No such replica vid=0xffffffff
> Could not allocate replica list
> beginrepair failed.
> 
> I must say, I'm stuck :(
> Any ideas ?

Ehh, it shouldn't do that.

What do you get if you do

    cfs beginrepair /coda/test
    ls -lR /coda/test
    cfs er /coda/test

It should show something like

    /coda/test/local
    /coda/test/global

Both should be files, one the copy on the servers and the other the
local copy.

Sometimes global is a dangling symlink too, indicating that there is a
server-server conflict underneath this local-global conflict. Currently
you need another client to fix the server-server conflict first.

Jan
Received on 2002-04-12 13:48:19