+Since 1.5.75
+ * A crash could occur if a single letter share name was
+ dynamically evaluated as matching a cell name. This was
+ due to a failure to treat the comparison of two nul
+ strings as identical.
+
+ * Docbook validation is performed by xmllint during builds.
+
+ * Volume package bugs in the file server can result in VOFFLINE
+ being returned to the client instead of VNOVOL or VMOVED. As
+ a result the Unix CM treats VOFFLINE the same as VMOVED and VNOVOL.
+ The Windows client has not. As a result, bugs in the file server
+ can cause the Windows client to lose if the volume has in fact
+ been moved to another server.
+
+ As part of this change, the volume location list is updated prior
+ to the volume status being applied to the server from which the
+ error was received.
+
+ * If the pages to be flushed are from a readonly or backup volume
+ they can't be dirty. In this case there is no need to stabilize
+ the pages before they are locked and recycled.
+ Stablilization is performed on the cm_scache_t object so do not
+ stabilize and unstablize for each cm_buf_t object.
+
+ * Over the years the processing of the Freelance callbacks have
+ added functionality that behaves much more like FetchStatus checks
+ to a file server. If the data version of the object has changed,
+ get the new data. Given that is the case, we can remove much of
+ the original refresh logic that is rather race prone. Say goodbye
+ to cm_fakeGettingCallback and cm_fakeDirCallback.
+
+ * When processing a pioctl path with either smb_ParseIoctlPath or
+ smb_ParseIoctlParent, cm_SyncOp(CM_SCACHESYNC_NEEDCALLBACK|GETSTATUS)
+ must be called on the cm_scache_t object to ensure that it is up
+ to date before we permit cm_Lookup or other operations to be performed
+ on it. Add the cm_SyncOp() call to smb_ParseIoctlPath and
+ smb_ParseIoctlParent to ensure it is done for all pioctl operations.
+
+ * The 32-bit tools installer was displaying client configuration wizard
+ pages. Since, the 32-bit tools share configuration with the AFS
+ service, the 32-bit tools installer should not be attempting to change
+ client configuration. Remove said wizard pages from the 32-bit tools
+ installer.
+
+ * cm_data.rootSCachep is a global pointer to the cm_scache_t that
+ represents the root.afs volume root directory. Throughout the
+ code this cm_scache_t was being used without ensuring that a
+ callback to the volume is in fact valid.
+
+ Under most circumstances this would not be a problem. However,
+ it is possible for a request to fail due to the lack of a callback
+ at a critical moment. Add a new function cm_rootScachep() that
+ attempts to ensure that a callback is present (if possible) prior
+ to use the cm_scache_t object.
+
+ * When the contents of the Freelance root directory changes the fake
+ directory buffers are updated and a fakeDirVersion is incremented.
+ The dataVersion of the cm_scache_t object is supposed to be updated
+ on the next access by performing a fake get callback request.
+ Unfortunately, this did not always occur because of a race. If another
+ Freelance object is updated first, the root directory object would
+ never successfully get a fake callback.
+
+ This patchset ensures that the generation of the fake directory
+ buffer content and the callback are obtained under the same set
+ of locks thereby removing the race.
+
+ * Enforce in afsd_service that tokens can be set for alternate
+ userids only if the SetToken pioctl is called from the
+ Local System account.
+
+Since 1.5.74
+ * Revise SMB QuerySecurityInfo Response for MS10-020
+
+ MS10-020 (http://support.microsoft.com/kb/980232) has caused
+ many problems for implementors of SMB 1.0 servers and applications
+ that call GetFileSecurity() without checking the return code to
+ determine if the call succeeded. The gist of the vulnerability
+ was that the SMB redirector would pass any buffer it received
+ to the application regardless of whether or not it was valid.
+ MS10-020 protects the applications by strictly validating the
+ SMB response data structure and the data in the security descriptor
+ that is returned.
+
+ The problem for SMB 1.0 server implementors is that there have
+ been at least three different protocol descriptions for
+ NT_TRANSACT_QUERY_SECURITY_DESC published over the last decade
+ and all of them are incomplete. Therefore, just about no one but
+ Microsoft has an SMB 1.0 server implementation that produces the
+ exact out that they are expecting to validate.
+
+ The end result is that in an attempt to protect applications from
+ crashing due to invalid input being passed in directly caused
+ dozens of applications to crash by not returning any security
+ descriptor data at all. Even when the applications didn't crash
+ they might not have been able to save their data. Cisco WAAS
+ and NetApp DataOnTap systems were most adversely affected and
+ they have had CIFS protocol licenses for many many years.
+
+ To fix OpenAFS here is what needed to be done:
+
+ 1. Instead of returning a security descriptor that gives ownership
+ to the NUL SID, give it to the Everyone SID and set the flag
+ that states that everyone has full access.
+
+ 2. Validate the input parameters. In particular, check to ensure
+ that the SMB file descriptor is valid and the file has not
+ been deleted.
+
+ 3. Enforce the maximum output data and parameter counts.
+
+ 4. Handle buffer overflow and buffertoosmall conditions
+ in the manner that Microsoft expects them to be handled.
+ In particular, note that the parameter data which is returned
+ in the SMB Data Region is not counted in the Data Count.
+ Even if MaxData is 0, we can still return parameters values
+ as long as MaxParm is large enough.
+
+ * Prevent use of AFSCache file contents if mapped to
+ a new address.
+
+ * The Windows version of "fs newcell" did not accept any parameters
+ and behaved quite differently from the Unix version. Instead of
+ permitting new cell information to be added, the Windows version
+ simply forced the existing cell information to be reacquired.
+
+ This update adds a new pioctl, VIOCNEWCELL2, to support the
+ implementation of a Unix-style "fs newcell". The functionality
+ added here differs from the Unix version in the following ways:
+
+ 1. "fs newcell" with no arguments is still accepted
+ in order to maintain compatibility with prior Windows
+ behavior.
+
+ 2. "fs newcell -cell <cell> -dns" instructs the cache manager
+ to add the new cell but obtain the vldb server info from
+ DNS.
+
+ 3. "fs newcell -cell <cell> ... -registry" instructs the cache
+ manager to add the new cell and also save the cell configuration
+ data in the registry for use the next time the service restarts.
+
+ 4. The -vlport and -fsport options are accepted although the
+ -fsport value is currently unsupported by the cache manager.
+
+ * New registry value "FreelanceImportCellServDB" instructs Freelance
+ to create a mount point for every cell name listed within the
+ CellServDB.
+
+ * Path MTU discovery for Rx is activated.
+
+ * Rx socket input buffer is converted to a circular buffer.
+
+ * Fix usage of cm_FreeServerList(). Do not set the server list
+ pointer to NULL after calling cm_FreeServerList(). Doing so
+ can result in a memory leak.
+
+ * Only enable Rx NAT pings on a single anonymous connection at a
+ time.
+
+ * Fix cm_IoctlSkipQueryOptions() buffer management. Prevents a
+ potential read beyond end of memory buffer.
+
+ * Reduce requested privileges when reading registry CellServDB
+ to the minimum required.
+
+ * Add support for RPC Pipe Service NetWkstaGetInfo levels
+ 101 and 102 which are called on Windows 7 and 2008-R2.
+
+ * Prevent integer overflow during quota percent used calculation
+ in Explorer Shell Extension (RT 126846)
+
+ * Generate a meaningful error if "fs listacls" or "fs setacls"
+ are executed on the Freelance root.afs volume.
+
+ * RXAFS_InlineBulkStat errors must be processed via cm_Analyze.
+ RXAFS_InlineBulkStatus does not return errors such as EACCES,
+ VNOVOL, VNOVNODE, VOFFLINE, VBUSY, VIO, VMOVED, etc. as an RPC return
+ code. Instead they are returned in the status info errorCode field
+ for each file.
+
+ Traditionally, the error associated with the first FID in the query
+ list has been returned to the caller of cm_TryBulkStatRPC().
+ However, the error has never been processed through cm_Analyze()
+ which means that the per-vnode processing for VNOVNODE and the volume
+ global processing for VMOVED, VNOVOL, etc. has never been performed.
+ As a result, failover to other .readonly volume instances cannot occur,
+ volume moves will not be handled, and files that have been deleted
+ are not detected.
+
+ This patchset makes the following changes:
+
+ 1. If an inline bulk operation has been performed and the inline
+ errorCode is a volume global error, then that error replaces
+ the RPC return code within the cm_Analyze() processing for
+ the RPC. This will affect whether or not a retry operation
+ is performed.
+
+ 2. The variable 'inlinebulk' is reset to 0 at the top of the
+ cm_Analyze() loop in case failover from an inlinebulk capable
+ file to an inlinebulk incapable file server takes place.
+
+ 3. The FID that is passed into cm_Analyze() is not a real fid.
+ Instead it consists of the cell and volume but vnode = 0.
+ This ensures that the error (if any) is not applied to the
+ directory object.
+
+ 4. If an inline bulk operation was performed, prior to performing
+ the cm_MergeStatus() operation a vnode a check is made to
+ determine if an error was returned for that vnode. If so,
+ cm_Analyze() is called with no connection, a fake cm_req_t,
+ the fid, and the error. This permits cm_Analyze() processing
+ to be performed on the file.
+
+ * Show configuration pages for all types of MSI installations
+
+ The OpenAFS MSI installer wizard used to not show any configuration
+ pages for "Typical" and "Complete" installations. Setting the
+ workstation cell and logon options during installation required
+ selecting the "Custom" option. Many users choose the "Typical" option
+ during installation, and thus would never see the configuration pages.
+ Therefore, for these users, the workstation cell was being set to the
+ default.
+
+ This patch makes the workstation cell and logon option configuration
+ pages visible to all types of installations (except silent
+ installations which show no UI).
+
+ * cm_LookupInternal creates Freelance mount points and symlinks
+ when queries cannot be found in the Freelance root.afs directory.
+ If the search name is a full cell name for which vldb information
+ can be obtained, then a mount point is added. If the search name
+ is a left-most substring or the full cell name with a dot appended
+ to it, then a symlink was created. This approach created a very
+ poluted Freelance name space.
+
+ This patchset makes the following changes:
+
+ 1. Do not create symlinks with a dot appended to the cellname
+
+ 2. Do not create symlinks where the left-most substring is not
+ a full dot separated component of the cellname.
+
+ 3. Permit lookups to succeed when we would have created a
+ symlink in the past without creating the symlink.
+
+ * BPlus tree lookups are much faster than searching through
+ the native directory format on Windows because the case sensitive
+ hash tables cannot be used successfully. Permit BPlus trees
+ to be used except when called with cm_BPlusDirFoo as the action
+ function because cm_BPlusDirFoo is used to build the BPlus trees
+ from the native directory format.
+
+ * Symlinks are ending up in the Freelance root.afs directory that
+ end with a dot. Make sure it cannot happen.
+
+ * cm_FreelanceAddMount and cm_FreelanceAddSymlink is supposed to
+ return the allocated FID of the entry that was added. However,
+ cm_NameI is called to perform the lookup without forcing an update
+ of the Freelance fake directory. As a result the entry may not be
+ found.
+
+ Force an update prior to calling cm_NameI() by using
+ cm_clearLocalMountPointChange() and cm_reInitLocalMountPoints()
+ if required.
+
+ * The Freelance fake root directory buffers were not zero-filled.
+ This results in random behavior that can cause the service to
+ terminate unexpectedly.
+
+ * The validation check for the response from the GetVolumeStatus
+ pioctl is incorrect. The response is not simply a VolumeStatus
+ structure but also several C strings appended to it.
+
+ * When flushing a file, we need to commit the file length changes
+ as well as the dirty buffers. Call cm_FSync instead of buf_CleanVnode
+ which is called by cm_FSync.
+
+ * Prevent rx_rpc_stats global lock from being a bottleneck in the
+ Rx library.
+
+Since 1.5.73
+
+ * Avoid a race when updating cell vldb server lists
+ that can result in a crash.
+
+ * Avoid a deadlock when managing CM_SCACHESYNC_STOREDATA
+ state operations for directory objects.
+
+ * Add new Windows Application Event log messages for
+ VBUSY, VRESTARTING, ALL_BUSY, ALL_OFFLINE, and ALL_DOWN.
+ Include message throttling to prevent the same message
+ from being logged repeatedly within a five second window.
+
+ * Reduce lock contention by waiting for cm_buf_t I/O
+ operations to complete before permitting cm_SetupStoreBIOD
+ to analyze a buffer for inclusion in a BIOD.
+
+ * Split the cm_buf_t flags field to separate the flags
+ that are protected by the cm_buf_t mutex from those
+ protected by the buf_globalLock. This eliminates the need
+ to hold both locks everytime the flags field is accessed.
+ Both locks were not held in the past resulting in race
+ conditions that could result in deadlocks.
+
+ * Add "vos setaddrs" command.
+
+ * Rx library lock contention avoidance between rx_NewCall and
+ rx_EndCall.
+
+ * Rx library races due to inconsistent use of rx_connection
+ conn_data_lock to protect the flags field.
+
+ * Rx library inconsistent use of RX_CALL_TQ_WAIT which could
+ result in deadlocks.
+
+ * Rx library must signal transmit queue waiters when flushing.
+ Otherwise, deadlocks can occur.
+
+ * In cm_UpdateVolumeLocation, avoid searching for a ".readonly"
+ volume on a numeric volume name.
+
+ * File buffer allocations whose offsets are beyond server EOF
+ should be locally allocated and zero filled. The file server
+ should not be issued a FetchData rpc which is guaranteed to
+ fail.
+
+ * Enable integrated logon to work with Windows 7/2008 when
+ user logons are performed with a non-Domain Kerberos principal.
+
+ * Add Protection Error messages to aklog output.
+
+Since 1.5.72
+
+ * Prevent the Explorer Shell extension from crashing if
+ symlink creation failed. (126406)
+
+ * A Rx level NAT ping has been implemented.
+ Add NatPingInterval registry value to
+ HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters
+ to permit Nat Ping to be enabled. The default value is 0 seconds.
+
+ * When a re-initialization is taking place, be sure to reset
+ cm_noLocalMountPoints to 0 in case someone deletes the "Freelance"
+ registry key out from underneath the service.
+
+ * Add krb5 error message translation to aklog, afscreds,
+ afslogon.dll, the network identity manager afs provider
+ and translate_et.
+
+ * Mode bits aren't directly exposed by the Win32 API. We were leaving
+ them to default to 0777 when creating new files and directories.
+ This version introduces two configuration parameters;
+ 'UnixModeFileDefault' and 'UnixModeDirDefault' which are DWORD
+ registry entries that are used to set the initial mode bits.
+ If the values are set to 0, then the behavior is identical to what we
+ had before.
+
+ * Minidump files are now produced with a timestamp appended
+ to the name.
+
+ * An SMB request debugging monitor has been added. When activated
+ the monitor will automatically turn on trace logging if any SMB
+ request has required longer than 60 seconds to complete and will
+ then create a minidump every 60 seconds thereafter until the
+ request completes.
+
+Since 1.5.71
+
+ * Restore use of DNS AFSDB and SRV records by kaserver clients.
+
+Since 1.5.70
+
+ * Avoid a potential Freelance deadlock during initial execution
+ of afsd_service.exe if the old ini file data has to be
+ imported.
+
+ * Three rx library corrections. (1) Idle data connection
+ processing could timeout if the send window filled and
+ took longer than the idle data timeout period for the
+ transmit window to re-open. (2) The transmit queue
+ could be emptied prematurely. A required check for the
+ queue being in use was forgotten. (3) The function that
+ is supposed to implement a wait for the transmit queue
+ to cease being busy failed to wait.
+
+Since 1.5.69
+ * Restore use of DNS AFSDB and SRV records which were
+ unintentionally disabled in 1.5.69
+
+Since 1.5.68
+ * Add a context menu to the NetIdMgr AFS Provider
+ notification icon.
+
+ * Prevent an empty directory Btree from being created and
+ marked as valid if cm_BPlusDirBuildTree fails.
+
+ * cm_BPlusEnumAlloc should not fail if the enumeration
+ contains zero entries.
+
+ * In cm_BPlusXXX functions, return ENOMEM if malloc() fails.
+
+ * Do not leak the cm_scache_t dirlock if cm_BPlusDirBuildTree
+ fails.
+
+ * fs examine should report owner and group ids as signed values.
+
+ * Protect buffers in smb_WriteData from simultaneous writes.
+
+ * Query network interface MTU values from the registry because
+ the IP Helper GetAdapterAddresses() fails to report a manually
+ configured MTU.
+
+ * Improve performance by not dropping and reacquiring the rx_call
+ lock in rx_WriteProc* and rx_ReadProc*.
+
+ * When configuring the rx library, the network interface MTU
+ must be applied to both the maximum send size as well as the
+ maximum receive size as is done when rx_SetMaxMTU is called
+ by the application.
+
+There was no 1.5.67 release
+
+Since 1.5.66
+ * Convert afsauthent.dll to use the xdr_alloc and xdr_free
+ routines from afsrpc.dll in place of malloc and free.
+ This permits the two libraries to be built with different
+ C runtime libraries without crashing.
+
+ * Set the DOS Readonly attribute on a file/directory
+ whenever the unix mode combined with the mask 0200
+ is true. Previously there was a discrepency between
+ the mask used for testing for readonly behavior and
+ that used for setting the attribute.
+
+ * Disable AFSVolSync based .readonly "whole-volume callback"
+ support because the all file servers prior to 1.5.67
+ (and perhaps 1.4.12) do not properly assign a value to
+ the AFSVolSync structure in bulk status RPC responses.
+
+ * Improve the error output from aklog to output the value
+ from krb5 error_message() if the afs_com_err output
+ indicates an unknown value.
+
+ * Hold a lock on the cm_scache_t object when the smb
+ server is assigning a new clientModTime value.
+
+ * Permit custom build version numbers to be set
+ without modifying the src/config/NTMakefile.<platform>
+ files.
+
+ * Add support for binary code signing with cross-signed
+ certificates and arbitrary versions of signtool.exe.
+
+ * Convert VBUSY and VRESTARTING to CM_ERROR_ALLBUSY and
+ do not permit them to be exposed to the smb redirector.
+
+ * Convert STATUS_TIMEOUT responses to STATUS_IO_TIMEOUT
+ to avoid confusion within the smb redirector.
+
+ * Fix the byte order assigned to port numbers associated
+ with AFSDB record lookups. They must be network byte
+ order not host byte order.
+
+ * Add dynamic server ranking based on RPC round trip
+ time measurements.
+
+Since 1.5.65
+ * Official support for Windows 7 and Server 2008 R2
+
+ * Improved Rx RTT computation following the lessons
+ learned by TCP.
+
+ * Prevent a file server bug (FetchData returning an
+ invalid length instead of zero) from causing an
+ "unexpected network error" when writing to files.
+
+ * Promote DNS SRV records as superior to DNS AFSDB
+ records. Support arbitrary port numbers for vldb
+ servers.
+
+ * Add "fs listacl -cmd" support.
+
+ * Add AFSVolSync based .readonly "whole-volume callback"
+ support. With this functionality, multiple objects from
+ a .readonly volume can have their status validated by
+ issuing a single RXAFS_FetchStatus RPC.
+
+ * Remove drive mapping functionality and service start/stop
+ from afscreds.exe.
+
+ * Remove drive mapping functionality from afs_config.exe.
+
+ * Adjust SMB error return codes to avoid returning
+ STATUS_TIMEOUT which results in the SMB redirector
+ disconnecting.
+
+ * Network Identity Manager OpenAFS Provider now provides its
+ own "AFS lock" notification icon to report the status of
+ "have tokens, have no tokens, service not started, service
+ started but inaccessible". Hovering over the icon lists the
+ cells for which tokens exist (if any) and the OpenAFS version
+ number. Double-clicking executes the Network Identity Manager
+ default action.
+
+ * When merging the current status for an AFS object, ensure
+ that the volume status for that object is set to 'vl_online'.
+
+ * Permit cm_Analyze to request a retry even when the cm_req_t is
+ flagged CM_REQ_NORETRY if the RPC failed due to RX_CALL_DEAD.
+ The retry will force the use of a new connection.
+
+ * Add digital signatures to resource only dlls as required by
+ Windows 7.
+
+ * Prevent pioctl calls from retrying indefinitely when a sharing
+ violation error occurs.
+
+ * Add {HKLM,HKCU}\SOFTWARE\OpenAFS\Client DWORD "ShowMountTab"
+ to restore access to drive mapping functionality in afscreds.exe
+ and afs_config.exe.
+
+ * Permit Rx minimum peer timeout, maximum receive window size and
+ maximum send window size to be configured via the registry.
+
+ * The MSI installer now sets the ARPINSTALLLOCATION as required by
+ Windows 7.
+
+ * DNS lookups set the port numbers in network byte order within
+ the cache manager.
+
+ * Replace use of the 16-bit compatibility API WinExec with
+ ShellExecuteEx in afs_config.exe and afscreds.exe. WinExec
+ is incompatible with Windows 7 / Server 2008 R2 UAC
+ functionality.
+
+Since 1.5.64
+ * Short circuit background volume checks if a shutdown
+ or suspend request is received.
+
+ * Avoid contacting the file server in order to allocate
+ an empty buffer beyond the current length of the file.
+
+ * When a request for streams on a directory or mount
+ point object is received, do not offer a default stream.
+ This was affecting the saving of roaming profiles.
+
+Since 1.5.63
+ * Fix Windows 2000 compatibility. Do not call rand_s()
+ even if it is compatible with the C run time library
+ version.
+
+ * Fix a data consistency error between the output of
+ NetWkstaGetInfo and NetServerGetInfo RPCs, specify the Lan
+ workstation group name "AFS", and report server name as
+ "AFS" instead of "\\AFS" when the caller asks for "\\AFS".
+
+ * Enable executables to be run from \\AFS on Windows 7.
+ Return "Name not found" instead of "File not found" when
+ a directory or file name cannot be found.
+
+ * Prevent cache manager from marking file server "down" when
+ the data returned in response to either RXAFS_FetchData64
+ or RXAFS_StoreData64 is invalid.
+
+ * Add pioctl data validation to the AFS Explorer Shell extension.
+
+Since 1.5.62
+ * After 1.5.62 afslogon.dll would no longer crash but it
+ also would not load "domain" specific configurations.
+ Fixed.
+
+ * An uninitialized variable was present in the symlink
+ recursion detection loop.
+
+ * Reverse addition of unique per file GUID during
+ Create/Open responses. Inclusion of the GUID prevents
+ Cygwin applications (and others) from accessing //afs.
+
+ * Treat "filename::$DATA" as a synonym for "filename".
+ This addresses the recent report of roaming profiles
+ failing to save back to the file server.
+
+ * When given a choice between an error from rx_Write()
+ or RXAFS_EndStoreData(), use the rx_Write() error.
+ This ensures that over quota and access denied errors
+ are acted upon.
+
+ * If an error occurs during RXAFS_StoreData operations,
+ apply that error to all of the buffers in the BIOD.
+ This ensures that failures will not be retried if they
+ will only fail again.
+
+ * Do not perform a DNS lookup for a cellname if the
+ cellname prefix is _._AFS_IOCTL_._. This will avoid
+ DNS lookups when the query is for
+ _._AFS_IOCTL_._.F7E5F580200909010061TTTTNT7TT.{10E39A49-4531-4496-A08E-842D4C440D20}.
+
+ * Fix Freelance root.afs volume object callback processing.
+ Object synchronization and status merging bugs.
+
+ * Fix Explorer Shell "invalid parameter" bug introduced
+ in 1.5.62.
+
+ * Log RXKAD errors to the trace log.
+
+ * Prevent simultaneous pioctl calls from multiple processes
+ from stepping on each other's data.
+
+ * Prevent simultaneous pioctl calls from crashing the
+ afsd_service.
+
+ * Add data validation to pioctl output processing in
+ ktc_GetToken and ktc_ListTokens.
+
+ * Add data validation to pioctl output processing in
+ fs.exe and symlink.exe.
+
+Since 1.5.61
+ * IMPORTANT: New support for DCE RPC Services: SRVSVC and WKSSVC.
+ No longer will browsing \\AFS produce truncated share names.
+
+ * Registry specified server preferences did not result in
+ the CM_SERVERFLAG_PREF_SET flag being applied to the
+ cm_server_t object.
+
+ * Avoid unnecessary DNS lookups of share names as cells
+ when it is known that the name cannot be a cell name.
+ Any name that does not contain a dot is skipped.
+
+ * When processing Dfs Referral requests, do not return an
+ error if the server is down or busy; if the volume is
+ offline; the cell vldb cannot be reached; etc.
+ These paths are still \\AFS paths and so the client
+ should not be sent to search elsewhere for resolution.
+
+ * CRITICAL: Prevent the cm_Daemon thread from terminating when
+ the machine enters the suspend state. IF the cm_Daemon thread
+ dies, there is nothing to execute down server checks.
+
+ * Prevent use of smb_StartedLock before initialization which
+ can result in a panic in the lock package.
+
+ * Improve error checking in afslogon.dll in order to prevent
+ NULL pointer dereferences within GetLogonDomainOptions()
+ if the Lsa operations fail.
+
+ * Add support to the build system to automatically update
+ a Microsoft Symbol Store.
+
+ * Do not access the cm_conn_t after executing the cm_Analyze
+ loops. Doing so can result in an access to memory that has
+ been freed.
+
+ * CRITICAL: If a StoreData request offset is not aligned on the
+ buffer module blockSize, (offset % blockSize) bytes of dirty
+ data will not be written to the file server.
+
+ * CRITICAL: If a StoreData64 request is sent to a file server
+ that does not support large files (>2GB) and the client is
+ unaware that the server has no large file support, the first
+ chunksize worth of data will not be written to the file server.
+ This bug was introduced in 1.5.3. It affects all IBM AFS file
+ servers and all OpenAFS file servers older than 1.4.0.
+
+Since 1.5.60
+ * If a file server becomes inaccessible while the cache manager has
+ dirty buffers to write, the afsd_service buf_IncrSync thread can
+ attempt to use 100% of the cpu.
+
+ * Fix the locking that protects the cm_cell_t lists
+ (all, name, id, free).
+
+ * Remove cm_cell_t objects from the name and id hash tables before
+ placing them on the free list.
+
+ * Fix "fs newcell" which was broken in 1.5.60.
+
+ * Do not attempt to synchronize dirty buffers if the associated
+ volume is known to be unavailable.
+
+ * Log to the Windows Event Log dirty buffers that cannot be written
+ during the shutdown process.
+
+ * Modify behavior of a Freelance mountpoint target that does not
+ specify a cell. Instead of assuming the target volume is in the
+ Freelance.Local cell, use the workstation "Cell" specified in the
+ registry. A mountpoint target of "#root.cell." will now mean the
+ root.cell volume in the workstation cell for the current session.
+ If the workstation cell changes from "athena.mit.edu" to
+ "andrew.cmu.edu", the referenced volume will also change without
+ requiring that the mount point targets be altered.
+
+ * Avoid false infinite loop errors when validating the cm_cell_t
+ free list during startup.
+
+ * Fix two more locations where xdr_free() should be used instead of
+ free() to permit a checked built of afsd_service.exe to work with
+ release builds of afsrpc.dll.
+
+ * Add cm_FindServerByUuid(). Re-implement RXAFS_InitCallBackState3()
+ to permit the server Uuid to be used to lookup the server object
+ and from that determine the cell. This permits callbacks that are
+ received from alternate addresses to be processed with a known server
+ object. Previously a request from an unknown server would clear all
+ callbacks from all cells.
+
+ * Fix a bug that prevented optimal performance when using a non-zero
+ value for 'daemonCheckVolCBInterval'. As a reminder, when
+ "daemonCheckVolCBInterval" is set to a non-zero value, all .readonly
+ volume callbacks are automatically renewed 90 minutes before their
+ expiration.
+
+ * Fix automatic ranking of vldb servers whose values are obtained from
+ the CellServDB file.
+
+ * Add logging for RX CALL DEAD errors which are generated if the remote
+ host is unreachable.
+
+ * Add failover for RX CALL TIMEOUT errors when the volume is readonly
+ or the call is to a vldb server.
+
+ * Add registry based cell search functionality to NetIdMgr,
+ afs_config.exe, and klog.exe.
+
+ * afsconf_GetCellInfo() has been modified to perform gethostbyname()
+ lookups on the host names in the CellServDB instead of using the
+ specified IP addresses. This provides aklog, pts, vos, etc. the same
+ CellServDB behavior that the Windows Cache Manager uses.
+
+ * Completely a behind the scenes change. The snprintf() routines have
+ been completely rewritten.
+
+ * When updating the stat cache entry callback of a .readonly object
+ from the volume group object, update the file server reference to
+ ensure it matches the most update to date callback.
+
+ * Add proper support for processing callbacks from multi-homed file
+ servers. Instead of comparing servers by cm_server_t pointer,
+ compare them by UUID when the UUID is known.
+
+ * During a shutdown short circuit the offline volume check daemon
+ functionality.
+
+ * Properly track link counts during cm_Link and cm_Unlink operations.
+
+ * Return the error code of RXAFS_FetchData / RXAFS_StoreData in
+ preference to an error code reported by rx_EndCall.
+
+ * Add "PerFileAccessCheck" registry value to permit testing against
+ experimental file servers that include per-file acl support. This
+ value is intentionally undocumented. It is not to be used by
+ production environment deployments.
+
+ * Log a warning to trace log if a volume group is marked as a DFS
+ File Set. The Windows OpenAFS client does not include DFS support.
+
+ * Fix a bug introduced in 1.5.60 that prevents the afs netidmgr
+ provider from obtaining tokens when referrals are in play.
+
+ * Add "fs chown" and "fs chgrp" commands to permit the owner and
+ group of objects stored in AFS to be set from Windows.
+
+ * Avoid performing background daemon operations when the machine is
+ going into suspend mode.
+
+ * Perform offline volume checks in most recently used order.
+
+ * Prevent crash when a data version for a cache object goes backwards.
+
+ * fs setquota, fs setcachesize, vos setfields, and vos create now
+ accept human readable orders of magnitude. (K, M, G)
+
+ * fs listquota fixed to permit large quota sizes to be displayed.
+
+ * rx packet resend and data packets sent counts were incorrect.
+
+ * Multi-thread safe library versions are now being generated and used.
+ mtafsubik.lib, mtafsutil.lib, mtafsvldb.lib, mtafsvol.lib.
+
+ * Microsoft SMB Redirector (mrxsmb.sys) support for ExtendedSessTimeout
+ values are now available on XP through Windows 7. Add functionality
+ to autodetect if such support is present on the machine. If so,
+ configure it if necessary and dynamically adjust the AFS Rx timeout
+ values accordingly.
+
+ * Correct another race condition in the Rx library that could result
+ in an unexpected panic while freeing the Rx call iovq.
+
Since 1.5.59
* A fix to the pioctl library to support drive substitution
to UNC paths. (SUBST <d:> <\\afs\cell\path>).