Coda File System

Coda-6.9.2 and RPC2-2.6 released

From: Jan Harkes <>
Date: Thu, 2 Aug 2007 16:22:54 -0400
New versions for Coda-6.9.2 and RPC2-2.6 are out.

It has been a while since the last release so we're overdue for a new
one, a couple of annoying bugs have been fixed, some more known problems
(that also exist in earlier releases) are still lingering around but
I've already been delaying this release too long.

There are no RVM or on the wire incompatibilities with previous releases.


  * Avoid rm -rf infinite loop. After unlinking all directory entries,
    (GNU's) rm seeks back to the beginning of the directory and tries to
    remove any entries that were added during the previous iteration.
    This didn't work well with Coda's because we wouldn't actually show
    the changes until the directory was closed and reopened. As a result
    rm would infinitely retry removing already unlinked files.
  * RPC2 defines several Coda-specific error numbers, but these were
    allocated starting at 100 and as a result overlapped with system
    specific error number. As a result returned errors from the servers
    were ambiguous and the client would in some cases interpret an
    innocent error as something serious and trigger a unnecessary
    disconnection or possibly mark an operation in conflict. Changing
    this error number mapping causes in incompatible ABI change for the
    RPC2 library. The error codes on-the-wire were not conflicting, so
    there is no network incompatibility between old and new versions.
  * When renaming an uncached file, which is really a name space
    operation on the source and target parent directories, we still
    dirty the renamed object because the parent pointer changes. As a
    result we couldn't access the file's contents until the rename
    operation was reintegrated. Work around this by forcing a (costly)
    data fetch before renaming.
  * There was a race where we could fail to read the most recent version
    of the update, volutil and auth2 token files on the server. This
    happens when a token files was updated more than once within a 1
    second window, we'd only see the first update. (discovered by Rune)
  * Allow file existence check to succeed, access(file, F_OK), for
    cached files when we are disconnected but do not have cached rights
    for the user performing the check.
  * Coda doesn't like volume names to exceed 32 characters, add a test
    to createvol_rep to prevent creating volumes overly long volume
    names. (Nikolai Gjerløff)
  * After the removal of the original local repair code (6.9.0) we
    forgot to reintroduce the bit of code that sets the conflict flag in
    the cfs listvol code. (Benjamin Gilbert)
  * After repairing a conflict on a volume root, when collapsing the
    expanded object, we replaced the mount link with bad data which
    crashed the client when we later accessed the volume. (discovered by
    Phil Nelson)

  * Don't disconnect the client just because the CML owner lost tokens.
    This is a usability improvement similar to the more agressive rights
    caching that was introduced in the previous Coda release. On the
    flip side, it makes situations where we are unable to reintegrate
    less obvious. It is possible to run for a long period of time in
    writeback caching (write-disconnected) mode without ever realizing
    that the local state never reaches the servers. Which leads in to,
  * Add gcodacon GUI to visualize reintegration state. This is a
    python/pygtk2 application which shows the state of cached volumes in
    a small window, and optionally adds a system tray icon. The
    advantage of using python for this is that it should be mostly OS
    independent (although I didn't yet get it to work right on Windows)
    and only introduces a run-time dependency, so you can "build" and
    install gcodacon without needing any gtk- and X11-related
    development headers and libraries.
  * During a hoard walk we were allocating many namecontext structures,
    just to discard them when the binding already existed. Delayed the
    allocation to the point where we know a new namecontext is really
    necessary. This may reduce some CPU overhead during hoarding, but
    there are still other issues we identified that cause poor hoard
    performance that have not yet been addressed in this release.
  * 'vcodacon' cleanups. (Phil Nelson)
  * Added coda_getservbyname, which knows all the IANA allocated Coda
    port numbers. This way we could get rid of coda-setup-ports and
    don't have to add fallback code all over the place.
  * Add uncached hint to the getattr result, the next Windows kernel
    module will use this hint to mark files as offline, which in turn
    prevents file browsers (windows explorer) from triggering a file
    fetch by reading icons/thumbnails or other data from the file.

Build related
  * Remove bash-ism's from various scripts (Greg Troxel)
  * Move more towards using POSIX/SuS defined functions (index -> strchr
    and such) (Rune)
  * Changed Coda's build infrastructure to automake, no more copying of
    the headers during the build and we should no longer depend on GNU
    make specific extensions.
  * Introduce client/server-only builds as configure options
    (--enable-client / --enable-server).
  * Include a coda.spec file in the distributed sources so RPMs can be
    built straight from the tar, rpmbuild -ta coda-x.x.x.tar.gz.
Received on 2007-08-02 16:25:14