Coda File System

Big CVS update

From: Jan Harkes <>
Date: Fri, 13 Aug 1999 22:27:39 -0400
Hi All,

Yes, I broke it :) I just checked in a lot of changes, which fix several
of bugs, but also make the current development code unable to be on
friendly terms with previous releases. Here is a list of changes,

Several memory leaks fixed:

- Fixed all known CountedBS vulnerabilities that were still left. Poor
  bounds checking made it possible to trigger memory leaks & buffer
  overflows in the servers.

- Incoming rpc2 connections that didn't call ViceNewConnectFS, and
  therefore didn't have a callback connection were never cleaned up.
  Excessive `cmon-ing', and firewalls that blocked rpc2 reply messages
  pushed the rpc connection count on the testserver to over 5000
  connections in a single day.

Improved info for users & developers:

- Added a new server statistics gathering program, that polls the
  server, instead of having the servers push the data out.
  It is in the tree under coda-src/smon2. You can also some of the
  resulting graphs at

- Fixed up the ViceGetStatistics, most fields weren't even filled in, it
  will require some more iterations to get all stats supported on all
  platforms. (hint, vice/

- Informing a user of upcoming token loss. During the final hour before
  a server rejects the token, a message is logged to /usr/coda/etc/console
  every 5 minutes, counting down to expiry. However, the client does not
  Invalidate the token until the server complains, so disconnected users
  can continue accessing their files.

- Clement documented safe_deletion properties of the various list
  structures used all over the code. This is written in the various
  header files in coda-src/util.

And a couple more bugfixes:

- A server that went unreachable didn't always get removed from the
  mgrpent. This causes either a doubling of the timeout, or in sime
  cases endless retries.

- Fixed the "zero length files" after reintegration, and "store with no
  local data" bugs. It was caused by truncation of an uncached object.
  This only fetched the attributes, and then created a new store logrecord
  and tagged the fso as dirty. Any subsequent open for write fails with
  ETIMEDOUT, because we can't fetch (the missing) data for a dirty

Other things (features?):

- Kerberos patch from Nickolai Zeldovich, adding -realm & -keytab
  options to kauth2. The second part of the patch, which patching
  krbsupport.c isn't applied yet. Where DO we keep that file?

- Closing /dev/cfs0 when venus asserts. This unblocks & returns an error
  for all pending kernel upcalls. Both NetBSD and Win95 were already
  doing this.

- As the vice.rpc interface was already broken by writeback and other
  changes, I've cleaned up some of the arguments passed over the wire by
  rpc calls. f.i. ViceGetStatistics sent an uninitialized but complete
  ViceStatistics struct to the server, which initialized it, filled in
  the fields, and sent it back. There are probably some more left.

By the way, for people who haven't kept track of the recent rush of
checkin's, here is a summary of the big changes as of 5.2.7.

* Fixes for big-endian problems with rpc2portmapper. (Troy Benjegerdes)
* Fixed incorrect va_args usage on linux-PPC. (Troy Benjegerdes)
* Maxids command for pdbtool. (Greg Troxel)
* Fixed libpdb maxid updating, added import/export/source commands to
  pdbtool, pdbtool now also accept all commands on the commandline.
* Fixed bitvector addressing problems on big-endian machines.
* RPC2 updates.
* Shortened server backprobe interval to stay below the (default?)
  5-minute masquerading firewall timeout.
* Solaris patches, Phil already got the server working. (Phil Nelson) 
* Fixed directory refcounting during failed repair sessions.
* Avoid null-pointer deref when clients disappear from the network.
* Length of the reintegration log & local-global conflict status is
  reported in the output of 'cfs listvolume'. (Clement)

* Writeback caching. (Shafeeq Sinnamohideen & Larry Greenfield, based
  on an initial design and code from Lily Mummert & Peter Braam)

I'll tag the current state of the CVS tree as 5.3.0. Oh, there are
probably still some bugs lurking in all that new code.

Have a nice friday 13th,
Received on 1999-08-13 22:28:47