Ok, I uploaded a new Coda release earlier today.
Coda-6.0.3 fixes a bunch small problems.
- Servers would occasionally crash during backups.
- Several more fixes for server-server resolution.
- More repair related fixes.
- Some fixes to the RedHat .spec file and hopefully fixed the init
script problems.
- Correct fetch progress reporting in codacon (Phil Nelson)
- Cygwin updates (Phil Nelson)
RPC2-1.20 fixes,
- Incorrect htonl was causing gross underestimate of roundtrip times on
slow networks and triggered many unnecessary disconnections especially
noticable when reintegrating large files over modem links. But it
occasionally hit even the Coda client on our webserver.
- added missed include/rpc2/rpc2_addrinfo.h to the various packaging
descriptions.
Also, 2.6.0-test6/7 and I believe recent FreeBSD kernels already have
the required realm patches. I still have to update the patches for
2.4.22/23 and will at some point submit them to Marcello for inclusion.
However there still are some problems which haven't been able fixed yet.
As far as I know these also existed in previous releases.
- It turns out that cfs sa /coda crashes venus. I thought that was
fixed, but a quick test shows that it actually hasn't.
- After a partially failed or aborted server-server repair session,
venus keeps stale objects in the cache. This causes subsequent repair
operations to fail because the server is expecting a different version
vector. I don't know if this is a kernel or a userspace issue. When
this happens, the only solution is to explictly expand the conflict
and flush the (readonly) subtrees. (cfs br foo; cfs fl foo/*; cfs er foo)
- I still have no explanation for the crashes that Steffen Neumann has
reported. Some initial testing shows that there is significant RVM
fragmentation and possibly some race conditions related to accessing
already freed objects when the Coda client is trashing it's local
cache. Having a cache larger than the typical working set is still the
best bet.
Now that this release is out, some pending changes that can and will
break things will finally get merged into CVS.
=== soon to be merged in CVS, this is NOT in 6.0.3! ===
IPv6 support for many of the simpler client/daemon programs, venus
and codasrv are still pending. The new stuff should still be
compatible with existing clients and servers as long as the machine
has a reachable IPv4 address. I'm expecting that this code will
break on at least NetBSD because of differences in the IPv6
implementation.
Coda servers use a vnode lookup table that is causing some 'growing
pains' for larger servers. The re-allocation of such a table would
fail when we reached around 100k files per volume. These tables will
be replaced by a hash table which with moderate success allowed us
to store about a million files in a single volume. This does require
some incompatible RVM changes to the vnode structure.
As we're going to be breaking the vnode structure anyways, we will
take the opportunity to move the per file SHA1 checksum into RVM.
This should significantly reduce server CPU usage when checksums
are enabled.
=== again these incompatible changes are NOT in 6.0.3! ===
Jan