Coda File System

Re: Off-network Coda tools

From: Jan Harkes <>
Date: Wed, 20 Jul 2005 12:43:45 -0400
On Wed, Jul 20, 2005 at 10:03:12AM -0500, wrote:
> Do any tools exist which allow coda volumes to be populated with files
> and directories without involving a client?  I know that running a
> client on the server isn't good.  But it would be useful to be able to
> access the volume FS without involving network overhead.  This would
> paticularly be useful in a case where a volume needed to be populated
> with a large number of files when it was created.  This is trivial
> with CIFS and NFS since they use the unix directory structure.
> However, coda uses its own organization.

No such tools exist. We need to use our own organization because the
server needs to store additional metadata (version vectors), addresses
files based on 96-bit unique identifiers instead of UNIX's 32-bit
inodes. As a result our directory format is quite different and we can't
just use a unix directory. We also store our directory data in RVM
instead of an on-disk container file. That is because RVM modifications
are logged and can be reverted when the server crashes, so we get some
consistency guarantees from RVM that the underlying filesystem might not

We also need to know when files change on the server to be able to send
callbacks. CIFS and NFSv2/v3 are using a timeout based revalidation
instead of explicit callbacks, so they don't care if some local user
is locally modifying things.

Finally, our replication is done by the clients instead of the servers.
A client makes sure he updates as many replicas as possible when
writing, and checks if any replicas missed some update when reading. If
a replica has missed updates, then the servers exchange a log of recent
updates to decide how to resolve the differences.

So even if you had local access on the server, you'd still need a client
to discover that there are differences between the servers, and the
log-based resolution to bring them back in sync would fail in many cases
since there is no actual server-side log of what operations were
recently performed.

Received on 2005-07-20 12:44:58