Coda File System

Re: No more than 7440 files per dir???

From: Jan Harkes <jaharkes_at_cs.cmu.edu>
Date: Mon, 4 Jun 2001 15:34:51 -0400
On Sun, Jun 03, 2001 at 11:14:57PM +0930, Brett Lymn wrote:
> According to Steve Wray:
> >'Will removal of debugging code & routines be feasable and will this
> >cause any incompatibilities with prior versions?'
> 
> I cannot answer any of those questions - I am not on the Coda team and
> they really need to be answered by someone who knows the code.

I do know that asserts in the older parts of the code are actually
calling functions that do useful stuff. Disabling debugging, and thereby
removing the code in assert statements WILL break things horribly. Most
of the asserts that are triggered are simply 'missed error paths' and
disabling the assert won't make the code work correctly.

> >What I was suggesting was taking what has been learned from the experiments
> >with coda and building on it.. evolution, but a new species, as it were
> >;)
> >distinguished by incompatibility much as real species are!
> 
> Could it be time for Coda 6?  Jan?

I've thought about that many times, and so did Peter Braam. Peter spun
off Intermezzo, which wants to achieve 90% of the Coda functionality in
10% of the code. The result is definitely interesting, more
functionality was moved into the kernel. The userspace code was
completely written in perl, leveraging off the better abstractions of a
higher level programming language.

In any case, a rewrite from the ground up is a lot of work, first of all
LWP needs a more 'modern' interface, fast mutexes, semaphores, condition
variables, and events, similar to the Java and Python thread
abstractions which map nicely on top of POSIX and NT threads, which at
some point then might replace the existing LWP stackbashing code. Add in
a sprinkle of higher level building blocks like (message) queues,
read-write locks and the typical nonblocking wrappers for select, sleep,
read, and write.

Then RPC2, many of the existing limits and instabilities are indirectly
a result of RPC2/SFTP. The fact that Coda is unreliable on ADSL links,
lacking IPv6 support, poor encryption. Probably building an RPC2 like
library on top of TCP or SCTP will avoid 'reinventing the wheel' too
much. But we really need some of the features of RPC2 that are not
available elsewhere, so using existing Corba or SUNRPC interfaces is
probably not possible.

RVM is actually reasonably usable and has few real limits (except for
the 32-bit address-space), but it could need at least benefit from a
different memory allocator that is more fragmentation resistant.

Coda clients and servers are a lot of work, and it's the details that
kill you (the last 1% is 99% of the work). So for now I'm trying to
improve the system by doing many smaller rewrites for parts of the
existing code.

Jan
Received on 2001-06-04 15:35:02