Index: openafs/doc/html/AdminGuide/cachmgr.gif
Index: openafs/doc/html/AdminGuide/fserver1.gif
Index: openafs/doc/html/AdminGuide/fserver2.gif
Index: openafs/doc/html/AdminGuide/overview.gif
Index: openafs/doc/html/AdminGuide/scout1.gif
Index: openafs/doc/html/AdminGuide/scout2.gif
Index: openafs/doc/html/AdminGuide/scout3.gif
Index: openafs/doc/html/AdminGuide/scout4.gif
Index: openafs/doc/html/AdminGuide/vnode.gif
Index: openafs/doc/man-pages/pod1/vos_offline.pod
diff -c /dev/null openafs/doc/man-pages/pod1/vos_offline.pod:1.1.4.2
*** /dev/null	Wed Jul 11 00:47:21 2007
--- openafs/doc/man-pages/pod1/vos_offline.pod	Tue Jun 12 00:02:13 2007
***************
*** 0 ****
--- 1,124 ----
+ =head1 NAME
+ 
+ vos offline - Takes a volume offline
+ 
+ =head1 SYNOPSIS
+ 
+ =for html
+ <div class="synopsis">
+ 
+ B<vos offline> S<<< B<-server> <I<machine name>> >>> S<<< B<-partition> <I<partition name>> >>> 
+     S<<< B<-id> <I<volume name or ID>> >>> S<<< [B<-unbless>] >>> S<<< [B<-cell> <I<cell name>>] >>> 
+     S<<< [B<-noauth>] | B<-localauth>] >>> S<<< [B<-verbose>] >>> S<<< [B<-encrypt>] >>> S<<< [B<-help>] >>>
+ 
+ =for html
+ </div>
+ 
+ =head1 DESCRIPTION
+ 
+ The B<vos offline> command takes a volume offline on the 
+ B<fileserver>.  
+ 
+ =head1 CAUTIONS
+ 
+ Taking a volume offline that has existing 
+ callbacks will result in those callbacks being broken
+ and clients not being able to access the volume.
+ 
+ =head1 OPTIONS
+ 
+ =over 4
+ 
+ =item B<-server> <I<machine name>>
+ 
+ Identifies the file server machine where the volume resides. 
+ Provide the machine's IP address or its host name (either fully
+ qualified or using an unambiguous abbreviation). For details, see
+ L<vos(1)>.
+ 
+ =item B<-partition> <I<partition name>>
+ 
+ Identifies the partition where the volume resides, on the
+ file server machine named by the B<-server> argument. Provide the
+ partition's complete name with preceding slash (for example, C</vicepa>)
+ or use one of the three acceptable abbreviated forms. For details, see
+ L<vos(1)>.
+ 
+ =item B<-id> <I<volume name or ID>>
+ 
+ Specifies either the complete name or volume ID number of the volume.
+ 
+ =item B<-unbless>
+ 
+ If the volume resides on a fileserver running as a I<dafs> (Demand
+ Attach File Server), then the volume may be marked as I<blessed> or
+ I<unblessed>.  A I<dafs> server will not bring I<unblessed> volumes
+ online unless the B<-bless> option to L<vos_online> is specified.
+ See L<vos_online(1)> for setting a volume to be I<blessed>.
+ 
+ =item B<-cell> <I<cell name>>
+ 
+ Names the cell in which to run the command. Do not combine this argument
+ with the B<-localauth> flag. For more details, see L<vos(1)>.
+ 
+ =item B<-noauth>
+ 
+ Assigns the unprivileged identity anonymous to the issuer. Do not combine
+ this flag with the B<-localauth> flag. For more details, see L<vos(1)>.
+ 
+ =item B<-localauth>
+ 
+ Constructs a server ticket using a key from the local
+ F</usr/afs/etc/KeyFile> file. The B<vos> command interpreter presents it
+ to the Volume Server and Volume Location Server during mutual
+ authentication. Do not combine this flag with the B<-cell> argument or
+ B<-noauth> flag. For more details, see L<vos(1)>.
+ 
+ =item B<-verbose>
+ 
+ Produces on the standard output stream a detailed trace of the command's
+ execution. If this argument is omitted, only warnings and error messages
+ appear.
+ 
+ =item B<-encrypt>
+ 
+ Encrypts the command so that the operation's results are
+ not transmitted across the network in clear text.
+ 
+ =item B<-help>
+ 
+ Prints the online help for this command. All other valid options are
+ ignored.
+ 
+ =back
+ 
+ =head1 EXAMPLES
+ 
+ The following example takes an online volume offline:
+ 
+    % vos offline -server sv7.stateu.edu -partition /vicepb -id root.afs
+ 
+ The following example takes an online volume offline and marks it
+ so that a B<vos online> without B<-bless> will not bring it online:
+ 
+    % vos offline -server sv7.stateu.edu -partition /vicepb -id root.afs \
+ 	-unbless
+ 
+ =head1 PRIVILEGE REQUIRED
+ 
+ The issuer must be listed in the F</usr/afs/etc/UserList> file on the
+ machine specified with the B<-server> argument and on each database server
+ machine. If the B<-localauth> flag is included, the issuer must instead be
+ logged on to a server machine as the local superuser C<root>.
+ 
+ =head1 SEE ALSO
+ 
+ L<vos(1)>,
+ L<vos_online(1)>,
+ L<bos_salvage(8)>,
+ 
+ =head1 COPYRIGHT
+ 
+ IBM Corporation 2000. <http://www.ibm.com/> All Rights Reserved.
+ 
+ This man page was created by Steven Jenkins.
Index: openafs/doc/man-pages/pod1/vos_online.pod
diff -c /dev/null openafs/doc/man-pages/pod1/vos_online.pod:1.1.4.2
*** /dev/null	Wed Jul 11 00:47:21 2007
--- openafs/doc/man-pages/pod1/vos_online.pod	Tue Jun 12 00:02:13 2007
***************
*** 0 ****
--- 1,120 ----
+ =head1 NAME
+ 
+ vos online - Brings a volume online
+ 
+ =head1 SYNOPSIS
+ 
+ =for html
+ <div class="synopsis">
+ 
+ B<vos online> S<<< B<-server> <I<machine name>> >>> S<<< B<-partition> <I<partition name>> >>> 
+     S<<< B<-id> <I<volume name or ID>> >>> S<<< [B<-bless>] >>> S<<< [B<-cell> <I<cell name>>] >>> 
+     S<<< [B<-noauth>] | B<-localauth>] >>> S<<< [B<-verbose>] >>> S<<< [B<-encrypt>] >>> S<<< [B<-help>] >>>
+ 
+ =for html
+ </div>
+ 
+ =head1 DESCRIPTION
+ 
+ The B<vos online> command brings an offline volume on line with the 
+ B<fileserver>.
+ 
+ =head1 CAUTIONS
+ 
+ None.
+ 
+ =head1 OPTIONS
+ 
+ =over 4
+ 
+ =item B<-server> <I<machine name>>
+ 
+ Identifies the file server machine where the volume resides. 
+ Provide the machine's IP address or its host name (either fully
+ qualified or using an unambiguous abbreviation). For details, see
+ L<vos(1)>.
+ 
+ =item B<-partition> <I<partition name>>
+ 
+ Identifies the partition where the volume resides, on the
+ file server machine named by the B<-server> argument. Provide the
+ partition's complete name with preceding slash (for example, C</vicepa>)
+ or use one of the three acceptable abbreviated forms. For details, see
+ L<vos(1)>.
+ 
+ =item B<-id> <I<volume name or ID>>
+ 
+ Specifies either the complete name or volume ID number of the volume.
+ 
+ =item B<-bless>
+ 
+ If the volume resides on a fileserver running as a I<dafs> (Demand
+ Attach File Server), then the volume may be marked as I<blessed> or
+ I<unblessed>.  A I<dafs> server will not bring I<unblessed> volumes
+ online unless the B<-bless> option to L<vos_online> is specified.
+ See L<vos_offline(1)> for setting a volume to be I<unblessed>.
+ 
+ =item B<-cell> <I<cell name>>
+ 
+ Names the cell in which to run the command. Do not combine this argument
+ with the B<-localauth> flag. For more details, see L<vos(1)>.
+ 
+ =item B<-noauth>
+ 
+ Assigns the unprivileged identity anonymous to the issuer. Do not combine
+ this flag with the B<-localauth> flag. For more details, see L<vos(1)>.
+ 
+ =item B<-localauth>
+ 
+ Constructs a server ticket using a key from the local
+ F</usr/afs/etc/KeyFile> file. The B<vos> command interpreter presents it
+ to the Volume Server and Volume Location Server during mutual
+ authentication. Do not combine this flag with the B<-cell> argument or
+ B<-noauth> flag. For more details, see L<vos(1)>.
+ 
+ =item B<-verbose>
+ 
+ Produces on the standard output stream a detailed trace of the command's
+ execution. If this argument is omitted, only warnings and error messages
+ appear.
+ 
+ =item B<-encrypt>
+ 
+ Encrypts the command so that the operation's results are
+ not transmitted across the network in clear text.
+ 
+ =item B<-help>
+ 
+ Prints the online help for this command. All other valid options are
+ ignored.
+ 
+ =back
+ 
+ =head1 EXAMPLES
+ 
+ The following example brings an offline volume online:
+ 
+    % vos online -server sv7.stateu.edu -partition /vicepb -id root.afs
+ 
+ The following example brings an offline, unblessed volume online:
+ 
+    % vos online -server sv7.stateu.edu -partition /vicepb -id root.afs -bless
+ 
+ =head1 PRIVILEGE REQUIRED
+ 
+ The issuer must be listed in the F</usr/afs/etc/UserList> file on the
+ machine specified with the B<-server> argument and on each database server
+ machine. If the B<-localauth> flag is included, the issuer must instead be
+ logged on to a server machine as the local superuser C<root>.
+ 
+ =head1 SEE ALSO
+ 
+ L<vos(1)>,
+ L<vos_offline(1)>,
+ L<bos_salvage(8)>,
+ 
+ =head1 COPYRIGHT
+ 
+ IBM Corporation 2000. <http://www.ibm.com/> All Rights Reserved.
+ 
+ This man page was created by Steven Jenkins.
Index: openafs/doc/man-pages/pod5/NetInfo.pod
diff -c openafs/doc/man-pages/pod5/NetInfo.pod:1.2 openafs/doc/man-pages/pod5/NetInfo.pod:1.2.6.1
*** openafs/doc/man-pages/pod5/NetInfo.pod:1.2	Thu Dec 22 02:34:50 2005
--- openafs/doc/man-pages/pod5/NetInfo.pod	Tue Jun 19 05:08:41 2007
***************
*** 85,90 ****
--- 85,91 ----
  
  =head1 SEE ALSO
  
+ L<NetRestrict(5)>,
  L<sysid(5)>,
  L<vldb.DB0(5)>,
  L<fileserver(8)>,
Index: openafs/doc/man-pages/pod5/NetRestrict.pod
diff -c openafs/doc/man-pages/pod5/NetRestrict.pod:1.1 openafs/doc/man-pages/pod5/NetRestrict.pod:1.1.6.1
*** openafs/doc/man-pages/pod5/NetRestrict.pod:1.1	Tue Dec 13 20:30:21 2005
--- openafs/doc/man-pages/pod5/NetRestrict.pod	Tue Jun 19 05:08:41 2007
***************
*** 7,15 ****
  There are two F<NetRestrict> files, one for an AFS client and one for an
  AFS File Server or database server.  The AFS client F<NetRestrict> file
  specifies the IP addresses that the client should not register with the
! File Servers it connects to.  The server F<NetInfo> file specifies what
! interfaces should not be registered with AFS Database Servers or used to
! talk to other database servers.
  
  =head2 Client NetRestrict
  
--- 7,15 ----
  There are two F<NetRestrict> files, one for an AFS client and one for an
  AFS File Server or database server.  The AFS client F<NetRestrict> file
  specifies the IP addresses that the client should not register with the
! File Servers it connects to.  The server F<NetRestrict> file specifies
! what interfaces should not be registered with AFS Database Servers or used
! to talk to other database servers.
  
  =head2 Client NetRestrict
  
***************
*** 79,84 ****
--- 79,85 ----
  
  =head1 SEE ALSO
  
+ L<NetInfo(5)>,
  L<sysid(5)>,
  L<vldb.DB0(5)>,
  L<fileserver(8)>,
Index: openafs/doc/man-pages/pod8/fileserver.pod
diff -c openafs/doc/man-pages/pod8/fileserver.pod:1.5 openafs/doc/man-pages/pod8/fileserver.pod:1.5.2.1
*** openafs/doc/man-pages/pod8/fileserver.pod:1.5	Wed Mar  1 00:02:31 2006
--- openafs/doc/man-pages/pod8/fileserver.pod	Mon Jun 11 23:58:36 2007
***************
*** 7,26 ****
  =for html
  <div class="synopsis">
  
! B<fileserver> S<<< [B<-d> <I<debug level>>] >>> S<<< [B<-p> <I<number of processes>>] >>>
      S<<< [B<-spare> <I<number of spare blocks>>] >>>
      S<<< [B<-pctspare> <I<percentage spare>>] >>> S<<< [B<-b> <I<buffers>>] >>>
      S<<< [B<-l> <I<large vnodes>>] >>> S<<< [B<-s> <I<small nodes>>] >>>
      S<<< [B<-vc> <I<volume cachesize>>] >>> S<<< [B<-w> <I<call back wait interval>>] >>>
      S<<< [B<-cb> <I<number of call backs>>] >>> [B<-banner>] [B<-novbc>]
!     S<<< [B<-implicit> <I<admin mode bits: rlidwka>>] >>>
      S<<< [B<-hr> <I<number of hours between refreshing the host cps>>] >>>
      [B<-busyat> <I<< redirect clients when queue > n >>>]
!     S<<< [B<-rxpck> <I<number of rx extra packets>>] >>>
!     [B<-rxdbg>] [B<-rxdbge>] S<<< [B<-m> <I<min percentage spare in partition>>] >>>
      [B<-lock>] [B<-L>] [B<-S>] S<<< [B<-k> <I<stack size>>] >>>
      S<<< [B<-realm> <I<Kerberos realm name>>] >>>
      S<<< [B<-udpsize> <I<size of socket buffer in bytes>>] >>>
      [B<-enable_peer_stats>] [B<-enable_process_stats>] [B<-help>]
  
  =for html
--- 7,34 ----
  =for html
  <div class="synopsis">
  
! B<fileserver> S<<< [B<-auditlog> <I<log path>>] >>>
!     S<<< [B<-d> <I<debug level>>] >>>
!     S<<< [B<-p> <I<number of processes>>] >>>
      S<<< [B<-spare> <I<number of spare blocks>>] >>>
      S<<< [B<-pctspare> <I<percentage spare>>] >>> S<<< [B<-b> <I<buffers>>] >>>
      S<<< [B<-l> <I<large vnodes>>] >>> S<<< [B<-s> <I<small nodes>>] >>>
      S<<< [B<-vc> <I<volume cachesize>>] >>> S<<< [B<-w> <I<call back wait interval>>] >>>
      S<<< [B<-cb> <I<number of call backs>>] >>> [B<-banner>] [B<-novbc>]
!     S<<< [B<-implicit> <I<admin mode bits: rlidwka>>] >>> [B<-readonly>]
      S<<< [B<-hr> <I<number of hours between refreshing the host cps>>] >>>
      [B<-busyat> <I<< redirect clients when queue > n >>>]
!     [B<-nobusy>] S<<< [B<-rxpck> <I<number of rx extra packets>>] >>>
!     [B<-rxdbg>] [B<-rxdbge>] S<<< [B<-rxmaxmtu> <I<bytes>>] >>>
!     S<<< [B<-rxbind> <I<address to bind the Rx socket to>>] >>>
!     S<<< [B<-vattachpar> <I<number of volume attach threads>>] >>>
!     S<<< [B<-m> <I<min percentage spare in partition>>] >>>
      [B<-lock>] [B<-L>] [B<-S>] S<<< [B<-k> <I<stack size>>] >>>
      S<<< [B<-realm> <I<Kerberos realm name>>] >>>
      S<<< [B<-udpsize> <I<size of socket buffer in bytes>>] >>>
+     S<<< [B<-sendsize> <I<size of send buffer in bytes>>] >>>
+     S<<< [B<-abortthreshold> <I<abort threshold>>] >>>
+     S<<< [B<-auditlog> <I<path to log file>>] >>>
      [B<-enable_peer_stats>] [B<-enable_process_stats>] [B<-help>]
  
  =for html
***************
*** 189,194 ****
--- 197,206 ----
  
  =over 4
  
+ =item B<-auditlog> <I<log path>>
+ 
+ Set and enable auditing.
+ 
  =item B<-d> <I<debug level>>
  
  Sets the detail level for the debugging trace written to the
Index: openafs/doc/txt/winnotes/afs-changes-since-1.2.txt
diff -c openafs/doc/txt/winnotes/afs-changes-since-1.2.txt:1.72.2.27 openafs/doc/txt/winnotes/afs-changes-since-1.2.txt:1.72.2.30
*** openafs/doc/txt/winnotes/afs-changes-since-1.2.txt:1.72.2.27	Thu May 17 12:19:03 2007
--- openafs/doc/txt/winnotes/afs-changes-since-1.2.txt	Tue Jul 10 16:01:28 2007
***************
*** 1,3 ****
--- 1,249 ----
+ Since 1.5.20
+ 
+  * changed the enum values for cm_serverRef_t state info to use a 
+    private name space to avoid collisions (srv_)
+  
+  * added a srv_deleted state for cm_serverRef_t objects.  This 
+    state is set when cm_FreeServerList() is called with the 
+    CM_FREESERVERLIST_DELETE flag set.  cm_FreeServerList() may
+    not always delete the cm_serverRef_t from the list if it is
+    still in use by another thread.  the srv_deleted state means
+    the object's contents are no longer valid and it must be 
+    skipped.  It will be deleted the next time the object is 
+    freed and the refcount hits zero.
+  
+  * the srv_deleted state is also used when a file server reports
+    either VNOVOL or VMOVED instead of marking the cm_serverRef_t
+    as offline.  This is done to prevent additional usage of the 
+    stale vldb data while waiting for the update volume request
+    to complete.
+  
+  * added a state field to the cm_volume_t object (enum volstate 
+    vl_ name space) that maintains the state of the volume based
+    upon the states of all of the cm_serverRef_t and cm_server_t
+    objects.
+  
+  * modified cm_UpdateVolume() to set the state of the cm_volume_t
+    RW, RO, and BK to either vl_alldown or vl_online.  There can't
+    be any other states because cm_UpdateVolume() destroys any  
+    previous knowledge we might have had regarding busy or offline
+    volume status
+  
+  * modified cm_UpdateVolume() to update the volume name in the 
+    cm_volume_t to the volume base name if the previous value was 
+    a volume ID.
+  
+  * modified cm_FollowMountPoint() to check to see if the volume
+    name is a volume ID and if so call cm_GetVolumeByID instead 
+    of cm_GetVolumeByName.  This ensures that volume IDs are always
+    looked up as numeric values.  There is no longer a need to 
+    maintain a separate cm_volume_t containing the string representation
+    of the ID value.
+  
+  * Added a flags parameter to cm_GetVolumeByName() and cm_GetVolumeByID().
+    The first flag is a "CREATE" flag which is set by all existing
+    calls.  The flag is not set by calls to cm_GetVolumeByID() from
+    the server probe code when volume status is being updated.  We 
+    do not want the server probe operation to result in additional 
+    turnover in the cached volume data.  The second flag is NO_LRU_UPDATE 
+    which is set when the server probe code updates the volume status.
+    This flag will be used to prevent the server probe operation from
+    changing the order of the least recently used queue.
+  
+  * Modified cm_GetVolumeByName to ensure that only one cm_volume_t is 
+    allocated for a given set of normal, readonly, and backup volumes
+    regardless of whether or not the volume is accessed via name or 
+    ID number.  The cm_volume_t namep field is always the base name
+    of the volume. 
+  
+  * Added a new volume state, vl_unknown.  This state is used as
+    the initial state for all cm_volume_t when the cache manager starts, 
+    for each cm_volume_t at creation, and for each cm_volume_t when
+    recycling.  The cache manager does not know the state of all 
+    volumes in the world, only those that are in the cache and for
+    which it has queried the VLDB and hosting file servers.
+  
+  * modified cm_GetVolumeByName() to initialize the state of a 
+    volume to vl_unknown.  The actual state will be set when a 
+    cm_VolumeUpdate() call completes successfully.
+  
+  * changed name of scache hash table variables to avoid ambiguity
+    when adding hash tables for volumes
+  
+  * fix a buffer overrun in sys\pioctl_nt.c  pioctl().
+  
+  * modified cm_UpdateVolume() to handle the case in which there is
+    no RW volume but there is are RO volumes for a given base name. 
+    This is done by querying for the ".readonly" volume name if the 
+    base name does not exist in the VLDB.  We never query for the
+    .backup name because under the current usage model a .backup 
+    volume may only exist on the server that the read-write volume
+    is located.  If there is no RW volume, there can be no .backup.
+  
+  * Added four hash tables for cm_volume_t objects to improve the 
+    search time of cm_GetVolumeByID(), cm_GetVolumeByName() and
+    cm_ForceUpdateVolume(). One each for Name, RWID, ROID, and 
+    BKID.  Three ID hash tables are necessary as long as it is
+    desireable to maintain a single cm_volume_t containing all
+    of the related RW, RO, and BK volume data.  Having the RW and
+    RO volume data in the same object is necessary for the 
+    implementation of cm_GetROVolumeID() which returns either the
+    RO or RW ID depending upon the existence of RO volume instances.  
+  
+  * Added a volume LRU queue so that volume reuse becomes fairer.
+    This does not replace the all Volumes list which is used when
+    it is desireable to walk a list of all the volumes whose order
+    is not going to change out from underneath you which makes it
+    safe to drop the cm_volumeLock.
+  
+  * handles volume hash table updates where volume name to 
+    volume ID number changes.  The volume name remains 
+    constant in the cm_volume_t.  if a vos rename is performed, 
+    the name of the volume will change and the volume IDs will be 
+    updated.  Subsequent access to the old volume ID will create a 
+    new cm_volume_t with the new name.
+  
+  * Added a daemon thread operation to query the state of volumes
+    listed as busy or offline.  cm_CheckBusyVolumes() calls 
+    RXAFS_GetVolumeStatus() for each volume ID that is marked vl_busy 
+    or vl_offline.   If the volume is now online, the status on the
+    volume is updated.  The default period is 600 seconds.  This can 
+    be configured with the BusyVolumeCheckInterval registry value.  
+  
+  * Added prototype for smb_IoctlPrepareRead() which was missing a
+    return type in the function definition.
+  
+  * Added volume id lists to the cm_server_t.  These lists are
+    allocated in blocks of ~32 IDs.  When a cm_PingServer() 
+    detects a change in server state, the state of the cm_volume_t
+    is updated.  
+  
+  * Added volID to the cm_serverRef_t object.  volID is used
+    to identify the volume for which the object is a referral.
+    cm_FreeServerList() uses the volID to remove the volume 
+    from the cm_server_t.
+  
+  * In cm_Analyze, when VNOVOL or VMOVED are received, 
+    call cm_ForceVolumeUpdate() to force a refresh of the volume 
+    location data.
+  
+  * Added cm_VolumeStatusNotification() which is used at the moment
+    to log volume status changes to the trace log.  It will also
+    be used as the access point to the File System Filter driver
+    notification engine.
+  
+  * Added an all cm_scache_t list to cm_data.  This replaces the use
+    of the stat cache LRU queue when we need to enumerate all 
+    entries.  The LRU list order is not static and when using it to 
+    enumerate all entries it can result in items being missed or
+    items being processed more than once.
+  
+  * Modified cm_Analyze(). Instead of reseting the busy or offline
+    state of a volume and forcing a retry of the operation
+    cm_Analyze will defer to the background daemon thread that will
+    update the state once every 600 seconds.
+  
+  * Added the automatic generation of a Freelance ".root" read-write
+    mountpoint that refers to the root.afs volume of the workstation
+    cellname at the time the mountpoint is created.
+  
+  * re-write cm_Analyze to make better use of the known volume
+    status.  VL_Server queries cannot result in CM_ERROR_ALLOFFLINE
+    messages.
+  
+  * renamed cm_CheckBusyVolumes to cm_CheckOfflineVolumes.  
+    busy volumes will be reset to srv_non_busy by the function
+    but there is no mechanism for querying the busy state other
+    than by attempting to access the resource.
+  
+  * cm_Analyze will query the state of an offline volume before
+    deciding whether or not to retry when all volume instances
+    are offline.
+  
+  * the algorithm used after an IP address list change detection
+    has been modified.  we now check the state of the VLDB servers,
+    then reset the rx connections, and finally check the state of 
+    the file servers.  Previously we flushed the rx connections 
+    and then checked the servers in whatever random order they 
+    were first discovered.
+  
+  * fix the volume status reported by "fs examine"
+  
+  * various improvements to the AFS Network Identity Manager Provider.
+    - Don't access freed objects after the window has been destroyed.
+    - Write back the AFS cell list in the identity configuration 
+      even when its empty.
+    - Disable all use of the provider when AFS is disabled for a 
+      particular identity.
+  
+  * Fix cm_cell_t leak.  When evaluating a mountpoint that uses an
+    alias instead of the full cellname, double check the full cell
+    name and see if we have a matching cell before allocating a new
+    one.
+  
+  * Dump more data with "fs memdump". All volumes and scaches and
+    now cells.
+  
+  * Reverse the order of the all cells list.  This ensures that
+    the workstation cell is always first in the list.
+  
+  * If we recognize the server from which a callback revoke was
+    received, then we can ensure that we only invalidate the status
+    information for cm_scache_t objects belonging to that cell.
+  
+  * When building for amd64, use APPVER 5.02 as we do not support
+    64-bit Windows 2000 and explicitly state the machine type in
+    the link flags.  
+  
+  * no longer treat VMWare network adapters as equivalent to a 
+    loopback adapter.  For some unknown reason, publishing the "AFS"
+    netbios name on them frequently results in a name collision 
+    error.
+  
+  * Use read locks whenever possible instead of write locks when
+    walking the allCellsp list.  This permits better use of multiple
+    CPUs.
+  
+  * In 1.5.20 a bug was introduced by the fake status when PRSFS_READ
+    is not present on the directory optimization.   It would report
+    mount points and directory objects for which there was no
+    status information as a zero length file.  Instead we can use 
+    the vnode number of the object to determine if it should be
+    considered to be a directory or a file.  If it is odd it is a
+    directory; even it is a file.
+  
+  * Give Back Callbacks to the file servers in response to suspend
+    and shutdown power management events.  Only give up callbacks
+    to UP servers and do so with a very short RX dead timeout.
+    (10 seconds)
+  
+  * Fix a race condition in the SMB FID cleanup code that could 
+    result in a stat cache mutex never being released.
+  
+  * Fix the graphics files that are installed as part of the 
+    IBM Administrators Guide.
+  
+  * Change the behavior of pioctl path parsing to not follow 
+    symlinks or mount points during evaluation.  This results in
+    the FID being the symlink or mount point and not the object
+    they point to.  This is consistent with the behavior of the 
+    UNIX client.
+ 
+  * Enable AFSDB record lookup for command line tools such as
+    "fs" and "vos".
+ 
+  * CellServDB update 2007-07-05
+ 
+  * Added a Volume Status Plug-in Interface that permits third parties
+    to receive notifications when the volume state changes occur.
+ 
+  * Ensure that all writes to the afsd_alloc.log file use CR-LF.
+ 
+  * Prevent the afsprocmgmt.dll from being unloaded while the 
+    background thread it starts is running.
+ 
+  * Avoid a race condition when closing smb_fid_t objects.
+ 
  Since 1.5.19
   * fix install path of IBM Quick Start Guide when installed by
     the Wix installer
