+Since 1.5.9904 (1.6pre4)
+ * Fix caching of non-existent volumes. The test to
+ trigger an immediate CM_ERROR_NOSUCHVOLUME in
+ cm_UpdateVolumeLocation() was backwards.
+
+ * Prevent the background daemon from checking the
+ status of non-existent volumes. cm_CheckOfflineVolumes()
+ should skip volume groups with the CM_VOLUMEFLAG_NOEXIST
+ flag set.
+
+ * The afskfw library should return an error immediately
+ if the krb5_32.dll library cannot be loaded. Affects
+ afslogon.dll and afscreds.exe.
+
+ * No longer depend on leashw32.dll in afskfw library.
+
+ * NPLogonNotify must provide the user password in all
+ calls to KFW_AFS_get_cred(). It cannot count on a
+ credential cache being preserved between calls. Permits
+ tokens to be acquired for all cells listed in the
+ TheseCells registry value for a domain.
+
+ * Improve the trace logging from NPLogonNotify().
+
+ * Avoid a race when writing the cm_scache_t mountPointString
+ when acquiring mount point or symlink target data via
+ cm_GetData(). The race could result in bogus target
+ data being cached.
+
+ * Permit the use of des-cbc-md5 and des-cbc-md4 enctypes
+ as DES keys in asetkey.exe.
+
+Since 1.5.9903 (1.6pre3)
+ * Fix automatic addition of Freelance cell mount points
+ broken in 1.5.9902.
+
+ * Avoid recursive offline volume checks which could cause
+ a crash due to stack exhaustion.
+
+Since 1.5.9902 (1.6pre2)
+ * rx calls issued on a busy call channel are now specially
+ handled and logged. All calls are automatically retried.
+
+ * The vos support for multi-homed servers was incorrectly
+ implemented. The changes have been reverted.
+
+ * Avoid wasting cm_buf_t objects and associated data buffers
+ for obtaining mountpoint and symlink target strings. Instead
+ read them directly into the cm_scache_t mountPointTarget
+ buffer.
+
+ * Optimize the evaluation of mountpoint and symlink targets
+ by skipping the FetchStatus and a full round-trip if
+ the cache manager does not have valid status information
+ for the object.
+
+ * Fix the abstraction of cm_FreelanceAddMount() by passing
+ in volume names that do not include the trailing dot.
+
+Since 1.5.78
+ [there was no 1.6pre1 for Windows]
+
+ * vos commands now manipulate servers by UUID and can
+ recognize multi-homed servers.
+
+ * afs_config will not longer set the Tray Icon State
+ in the registry if the checkbox is not present in
+ the dialog. [RT 128591]
+
+ * Heimdal's roken utility library has been added
+ as \Program Files\Common\afsroken.dll
+
+ * When probing servers to determine if they are up or down
+ no longer issue an RXAFS_GetTime RPC to servers that indicated
+ that they do not understand the RXAFS_GetCapabilities RPC.
+ Since they responded it is known that they are up.
+
+ * AFS Explorer Shell Extension now works from folder
+ backgrounds. Overlays for mount points and symlinks
+ are present in the dll, but are not registered at present
+ by the installers.
+
+ * Do not use RankServerInterval registry value as the value for
+ PerformanceTuningInterval.
+
+ * CellServDB updated to 13 Dec 2010 release from grand.central.org
+
+ * Add "fs chmod" command and display current mode as part
+ of "fs examine" output.
+
+ * When the data version of a mountpoint or symlink changes,
+ the target string in the cm_scache_t object must be cleared.
+ Otherwise, the new target will not be queried.
+
+ * "fs checkservers" now includes vldb servers in the output
+ and only lists multi-homed servers once. A multi-homed
+ server that has at least one up interface is no longer
+ considered to be down.
+
+ * When asynchronously storing dirty data buffers to the
+ file server ensure that (a) the cm_scache_t object and
+ the cm_buf_t object are for the same File ID so that
+ locking and signalling work properly; and (b) if the
+ FID no longer exists on the file server, do not panic,
+ just discard the buffer.
+
+ * When processing VNOVOL, VMOVED and VOFFLINE errors perform
+ server comparisons by UUID or address and not simply by
+ cm_server_t pointer. Otherwise, server failover may not
+ succeed.
+
+ * Do not preserve status information for cm_scache_t objects
+ when the issuing server is multi-homed.
+
+ * Giving up all callbacks when shutting down or suspending
+ the machine is now significantly faster due to the use
+ of an rx_multi implementation. (This functionality is
+ still off by default and must be activated by a registry
+ value.)
+
+ * Race conditions were possible when updating the state
+ of the cm_volume_t flags and when moving the volumes
+ within the least recently used list.
+
+ * Ensure that the lanahelper library does not perform a
+ NCBRESET of each lan adapter when enumerating the
+ current network bindings. Correcting this permits OpenAFS
+ to work on Windows 7 when the network adapter settings
+ change.
+
+ * Fix creation of mount points and symlinks as \\AFS\xxxx
+
+
+Since 1.5.77
+ * Reimplement FetchData and StoreData operations to make
+ use of rx_Writev and rx_Readv which is faster than than
+ multiple calls to rx_Write and rx_Read. Throughput
+ improvements of up to 20% are possible.
+
+ * Many improvements to the rx rpc stack:
+
+ - RTT measurements
+
+ - Fast recovery is not triggered by packet resend timeouts
+
+ - Socket errors are now detected and reported
+
+ - avoid repetitive memory allocations
+
+ - avoid calling gettimeofday() for every packet
+
+ - reduced dependency on the call->lock
+
+ - When a call receive is completed, ack all of the packets
+ immediately. Do not wait for the first response packet
+ to be sent.
+
+ - Do not hold the call->lock during rx_Write* and rx_Read*
+ operations when the call fields in use can only be accessed
+ by the application thread.
+
+ - Reduce the default window size from 128 back to 32 because
+ the current overhead from walking packet queues in the rx
+ listener thread significantly hampers the ability to
+ process incoming packets from the network.
+
+ - Only backoff the peer timeout once for a series of naks.
+
+ - Release builds are lean and mean. All debugging and
+ packet tracking code is disabled.
+
+ * Version number is logged to the Windows Application Event
+ Log as part of the start pending message.
+
+ * MSI installers now backup and restore configuration
+ data during upgrades.
+
+ * Rx pmtu discovery has been disabled by default. Use
+ HKLM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters
+ RxPMTUDiscovery "DWORD"
+ value to re-activate.
+
+ * cm_BkgDaemon event evaluation has been optimized to avoid
+ unnecessary overhead.
+
+ * If a volume is known to be readonly, then locally fail any
+ change request without sending it to the file server. This
+ avoids triggering the file server's abort threshold.
+
+ * Do not leak cm_volume_t objects from the volume LRU queue.
+
+ * Ensure that cm_NameI errors are acted upon promptly.
+ There are many cases in the SMB server where an error from cm_NameI()
+ was either ignored or not acted upon until several other operations
+ are performed that could result in the same error being repeated.
+ This is a mistake which did not have negative side effects until
+ additional checks for callback status were added recently.
+
+ At present, if a CM_ERROR_ACCESS error is returned and ignored,
+ subsequent attempts to operate on the same cm_scache_t will result
+ in additional queries to the file server that will also end in an
+ abort response. This can trigger the file server to delay responses
+ to the client.
+
+ * Fix fs mount point and symlink create operations which were
+ failing due to improper directory separator termination.
+
+ * RXAFS_GetVolumeStatus can return VNOVOL, VMOVED, etc. In
+ order to process them and update volume state a fid must
+ be passed to cm_Analyze(). Use the volume root fid.
+
+ * Negative caching for volume lookups that fail with either
+ VL_NOENT or VL_BADNAME. The expiration time is five minutes.
+ This prevents volume lookup storms.
+
+ * Provide each volume lookup its own two hour lifetime instead
+ of reseting all volume location information every two hours.
+ This prevents the first smb path evaluation after the volume
+ location data has been discarded from potentially causing an
+ smb client timeout.
+
+Since 1.5.76
+ * When the SYSTEM account is in use, the SMB connection is
+ not always established as S-1-5-18. Sometimes it uses an
+ anonymous, S-1-5-7, connection. In both cases the SMB
+ authentication name is the nul string. To better identify
+ when an SMB connection is local system, the smb_username_t
+ is now stored as a SID instead of a user name. When a SID
+ is used, a new flag bit is set SMB_USERNAMEFLAG_SID.
+
+ In smb_SetToken if AFS_PIOCTL_AFSLOGON is set and the user
+ connection is not SYSTEM, the RPC SID is checked. If RPC
+ SID is SYSTEM, that supercedes the SMB authentication.
+
+ * Replace STATUS_IO_TIMEOUT with RPC_NT_SERVER_TOO_BUSY for
+ CM_ERROR_ALLBUSY.
+
+ * Replace STATUS_PATH_NOT_FOUND with RPC_NT_SERVER_UNAVAILABLE
+ for CM_ERROR_ALLOFFLINE and CM_ERROR_ALLBUSY.
+
+ * Optimize behavior of buf_CleanAsyncLocked(). Avoid searching
+ for the cm_scache_t object by FID if it is already known.
+
+ * If the readonly file attribute is set (stored as a unix mode)
+ then a CreateFile operation should fail if the file is opened
+ for DELETE in combination with any other privilege.
+
+ * If the directory buffer contents are garbage we can crash
+ the service. Add some simple validation checks to ensure
+ that cm_dirEntry_t objects have the correct flag value and
+ that the name strings are not too long.
+
+ * If the bulkStat errorCode indicates that a particular object
+ is inaccessible due to a VIO error, we must update the server
+ status appropriately in order to permit failover.
+
+ * An RX_MSGSIZE error is returned by the new PMTU detection
+ code. It is critical that such an error result in a retry of
+ the operation that failed. Otherwise, the PMTU detection can't
+ work and the server will be marked down.
+ Secondly, it is important that such errors not leak to the
+ application layer. Map them to CM_ERROR_RETRY in all cases.
+
+ * Translate RX_RESTARTING to the same cache manager error code
+ for all RPC classes.
+
+ * When logging server volume instance errors to the windows
+ application event log, be sure to log the cell as well.
+ Translating from server ip address is non-trivial. Make it
+ easier for administrators triaging issues to plug the volume
+ and cell info into vos commands.
+
+ * Since unix mode bits are represented in octal in most cases
+ make sure we log them that way.
+
+ * The cm_enforceTrailingDot() function failed if there was a
+ trailing dot followed by white space.
+
+ * Rx: Do not send RX_MSGSIZE if the PMTU size did not change.
+
+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>).
+
+ * On April 9th Microsoft released a Hot Fix for Windows Server 2003 SP2
+ that corrects a deadlock in the smb redirector and also adds new
+ functionality that permits the AFS SMB server to be given a longer
+ timeout than is normally the case. New functionality has been added
+ to configure these additional LanmanWorkstation\Parameter values.
+ (This functionality has been backported to XP SP3 and is scheduled
+ to be released on June 5th.)
+
+ * The BackConnectionHostNames registry value configuration was broken
+ when dynamic re-establishment of Netbios Name registrations was added.
+ Restore it.
+
+ * Hidden vos commands are revealed.
+
+ * If the "DisableLoopbackCheck" registry value is set, do not unset
+ it during the same service session.
+
+ * Reorganize code that prevents multiple Store operations to the same
+ File.
+
+ * Modify IsPathInAfs test in Explorer Shell Extension and fs.exe to
+ permit broken symlinks to be treated as being in AFS.
+
+ * Fix vos commands that output 64-bit integer values.
+
+ * Cygwin Import Libraries are provided in the SDK for all OpenAFS DLLs.
+ Permits building cygwin applications against OpenAFS libraries.
+
+ * OpenAFS Release Notes, Administrator Guide and User Guide now installed
+ as Windows HTML Help (.CHM) files.
+
+ * NSIS installer does a much better job of cleaning up files left
+ over from previous installs.
+
+ * Fix RT#124787, a race condition between "fs flush <dir>", "fs flushvolume",
+ or "fs flushall" and on-going directory operations that can result in
+ afsd_service.exe crashing.
+
+ * Add support for DNS SRV records in place of AFSDB records.Â
+ _afs3-vlserver._udp.<cellname>. Priority field is used.Â
+ Weight is currently ignored.
+
+ * Add a method of specifying Client CellServDB information within the
+ registry that can be used to either override the CellServDB file or
+ force the use of DNS lookups for a given cell.
+
+ The registry schema is as follows:
+
+ HKLM\SOFTWARE\OpenAFS\{Client,Server}\CellServDB\[cellname]\
+ "LinkedCell" REG_SZ "[cellname]"
+ "Description" REG_SZ "[comment]"
+ "ForceDNS" DWORD {0,1}
+
+ HKLM\SOFTWARE\OpenAFS\{Client,Server}\CellServDB\[cellname]\[servername]\
+ "HostName" REG_SZ "[hostname]" Default: [servername]
+ "IPv4Address" REG_SZ "[address]" Used only if gethostbyname() fails.
+ "IPv6Address" REG_SZ "[address]" <future>
+ "Comment" REG_SZ "[comment]"
+ "Rank" DWORD "0..65535" Default: 0
+ "Clone" DWORD "{0,1}" <future: server only>
+ "vlserver" DWORD "7003" <future>
+ "ptserver" DWORD ... <future>
+
+ ForceDNS is implied non-zero if there are no [servername]
+ keys under the [cellname] key. Otherwise, ForceDNS is zero.
+ If [servername] keys are specified and none of them evaluate
+ to a valid server configuration, the return code is success.
+ This prevents failover to the CellServDB file or DNS.
+
+ Only one of "HostName" or "IPv4Address" is required. "HostName"
+ is optional if [servername] is the host name.
+
+ * Extend registry based CellServDB functionality to
+ afsconf_GetCellInfo() interface used by aklog and many
+ other command line utilities.
+
+ * libafsconf.dll moved from OpenAFS\Client\Program to OpenAFS\Common
+ as it is now used by both client and server components.
+
+Since 1.5.58
+ * PriorityClass of afsd_service.exe process raised to
+ "High" to match the priority of the system services
+ that are waiting for afsd_service.exe to respond.
+ Configurable using [TransarcAFSDaemon\Parameters]
+ DWORD "PriorityClass" value. (use values from Win32
+ API)
+
+ * Change error reporting of CM_ERROR_BADSHARENAME to
+ use the correct error (NTSTATUS_BAD_NETWORK_PATH).
+ The error we were sending would cause the smb
+ redirector to drop the connection.
+
+ * Change the error reporting of CM_ERROR_ALLOFFLINE
+ and CM_ERROR_ALLDOWN to return NTSTATUS_PATH_NOT_FOUND.
+ Previous we would return Bad Network Path which
+ would cause the smb redirector to cancel all file
+ handles on the same "share".
+
+ * A debug version of afsd_service.exe can now be used
+ with a release version of afsrpc.dll (or vice versa).
+ afsrpc.dll now implements and exports xdr_free().
+
+ * Removed all unprotected OutputDebugString() calls as
+ those calls can block for up to 10 seconds if there
+ is contention for the globally shared memory or if
+ the debugger fails to read data in a timely manner.
+
+ * Visual Studio 2008, WDK 6.1 and DDK 6.1 are now
+ supported for builds. The production releases still
+ use VS 2005.
+
+Since 1.5.57
+ * Discovered that XP/2003 supports a variant on recvmsg
+ called WSARecvMsg. The input parameters are mostly
+ compatible with the Posix recvmsg. This will save
+ multiple memcpy() calls per received packet.
+
+ * Discovered that Vista/2008 supports a variant on
+ sendmsg called WSASendMsg. The input parameters
+ are mostly compatible with the Posix sendmsg. This
+ will save multiple memcpy() calls per sent packet.
+
+ * Exporting rx_ReadProc32, rx_WriteProc32 from afsrpc.dll
+ and utilizing rx_ReadProc32 from within the cache manager
+ as part of the FetchData operations. rx_ReadProc32 and
+ rx_WriteProc32 are optimized versions of rx_ReadProc and
+ rx_WriteProc for use when reading 32-bit integer values.
+
+ * The Network Identity Manager AFS provider now reports
+ progress events. These provide a better user experience
+ with Network Identity Manager 2.0.
+
+ * [RT 124293] A race condition exists which permits the
+ scp field of the an smb_fid_t object to become invalid
+ after a request on the smb_fid_t has begun. Remove the
+ race by protecting all access to the scp field with the
+ smb_fid_t mx mutex and obtaining a local reference on
+ the cm_scache_t object for the length of the request.
+
+ * [RT 124276] If the vldb is out of sync with the contents
+ of the file servers, afsd_service will retry too many
+ times when a file server reports a volume as not being
+ present. Now if the list reported by the vldb is the
+ same as the previously seen list, then the retry is
+ aborted.
+
+ * [RT 124276] Read-only volume failover was broken in
+ 1.5.53 whenever accessing a volume results in VNOVOL or
+ VMOVED.
+
+ * [RT 124276] Prior to 1.3.70 the volume server reference
+ list was not reference counted and would be prematurely
+ freed while in use. When reference counting was added
+ in 1.3.70 a bug was introduced that could result in
+ service reference list corruption.
+
+ * Add Windows Application Event Log warning messages for
+ "Client SMB MPX value too large" and
+ "Client SMB Buffer Size too small".
+
+ * Renaming of files across directory boundaries would result
+ in an invalid handle error when attempting to access the
+ files after the move.
+
+ * Fix the handling of Tran2 Set Path Info RPCs. Do not fail
+ when a smb file descriptor cannot be found. The whole point
+ of using a Path Info function is because an smb file
+ descriptor wasn't allocated.
+
+ * More edge cases in which dynamic addition of Freelance
+ root.afs entries would get the wrong FID or where the
+ root.afs directory would not be refreshed.
+
+ * Buffer overflow could occur if the workstation cell name was
+ longer than 64 characters. Crashes could occur in
+ afscreds.exe, afslogon.dll, and afsd_service.exe.
+
+ * VNOSERVICE and VOFFLINE errors were leaking and were exposed
+ to the smb client.
+
+ * Improve consistency of the bad data version value used for
+ cm_scache fields.
+
+ * Log file server uuid values as part of the cm_server object
+ when available. Dump the cm_server object list in response
+ to "fs memdump".
+
+ * Optimize the performance of resetting access control lists
+ when tokens are set or removed.
+
+ * Fix vos.exe so that it can work with very large volume
+ identifiers
+
+ * Remove symlink recursion tests and increase max symlink count
+ to 64 from 16.
+
+Since 1.5.56
+ * Undo the "UAC manifest fix" applied to afs_config.exe.
+
+ * Fixed some additional race conditions in the Rx library
+
+ * Ensure that Freelance allocation of vnodes follow
+ the AFS convention of odd vnodes are directories
+ and everything else is an even vnode.
+
+ * Add Freelance logic to mount point and symlink
+ evaluation functions.
+
+ * Enhance smb_ParseASCIIBlock() so that it can handle
+ all of the STRING formats defined by the CIFS Technical
+ Report 1.0.
+
+ * Validate the output of smb_ParseASCIIBlock() in all
+ callers. Return CM_ERROR_BADSMB if the STRING field
+ cannot be parsed. CM_ERROR_BADSMB will cause the
+ contents of the packet to be logged.
+
+ * If multiple SMB Raw Write operations were taking
+ place at the same time, there could be data corruption
+ because unique event objects were not generated for
+ each Netbios receive operation.
+
+Since 1.5.55
+
+ * Fix a race in rxi_WriteProc which could result
+ in a freed or in use packet being passed to
+ rxi_PrepareSendPacket if the call is currently
+ in a transmit wait state. Passing a freed packet
+ will result in a panic. Passing an in use packet
+ might result in a call failure or perhaps data
+ corruption.
+
+ * Kerberos referrals broke the NIM AFS provider
+ logic for automated configuration of the workstation
+ cell with a new identity. Now if a referrals
+ response is returned, assume the cell belongs to the
+ new identify.
+
+ * The interface to buf_CleanAsync() and
+ buf_CleanAsyncLocked() has been changed to permit
+ errors to be propagated to the caller.
+
+ * During an enumeration of a directory, if the btree
+ has not yet been generated, return an error.
+
+ * When mapping CM_ERROR values to NTSTATUS values
+ do not treat 0 as an error.
+
+ * Avoid a cm_scache_t object reference count underflow
+ when renaming via the SMB interface.
+
+ * smb_IsMask() can be called with a non-8.3 input buffer.
+ Separate smb_IsMask() into smb_Is8Dot3Mask() for 8.3
+ input buffers and smb_IsMask() for non-8.3 input buffers.
+
+ * Add cm_buf_t error state to the "fs memdump" output.
+
+ * pioctl drive mapping checks need to take into account
+ Global Drive Mappings and SUBST assignments.
+
+ * Rename operations should not be permitted if the
+ destination name collides with an existing name that
+ differs only by case UNLESS the collision is the object
+ that is being renamed.
+
+ * Increase the maximum number of background daemon threads
+ to 64. Leave the default at 4.
+
+ * Set the FILE_UNICODE_ON_DISK flag when reporting the
+ file system characteristics.
+
+ * Report the maximum component name length as 255 even
+ for Unicode as part of the file system characteristics.
+
+ * Add RX debugging information to "fs memdump" output
+ in checked builds.
+
+ * Refcount the cm_server_t objects returned by
+ cm_FindServerByIP()
+
+ * Fix the UAC manifest applied to afs_config.exe
+
+ * rxdebug now indicates if any RX_CONN flag is set
+ not just some of them
+
+ * Change the mapping of CM_ERROR_WOULDBLOCK from
+ NTSTATUS_LOCK_NOT_GRANTED to NTSTATUS_CANT_WAIT
+
+Since 1.5.54
+
+ * Includes #GCO Public CellServDB 07 Nov 2008
+
+ * Prevent separate cell entries from being created for
+ "foobar.org" and "foobar.org." which can happen if
+ an AFSDB record is found instead of a CellServDB
+ record.
+
+ * Fix a panic when checking the SMB virtual circuit list.
+ If a VC is destroyed while the list is being checked
+ it is possible for the next object to become invalid.
+
+ * Increased logging to afsd_init.log of netbios name
+ related errors.
+
+ * Fix a DNLC panic when a UTF-16 string that cannot be
+ converted to a utf-8 string is provided as a filename.
+
+ * In the NSIS installer, delete old afslogon.dll/afscpcc.exe
+ from %windir%\system32 and fix the WinLogon\Notify\AfsLogon
+ location to refer directly to the new location in
+ %programfiles%\openafs\client\program
+
+ * Be more aggressive about responding to Netbios
+ NRC_BRIDGE/NRC_NOWILD errors. Rebind the Netbios name to
+ the LANA within the listener thread without performing a
+ delete and reset.
+
+ * Use the WNet Enumeration of all connected drives as a filter
+ in the pioctl GetIoctlHandle operation. This should remove
+ the last situations in which there was a delay when opening
+ an Explorer Shell properties menu with the AFS Shell
+ Extension.
+
+ * Fix the parsing of CellServDB in Windows to handle linked
+ cells as is done on Unix.
+
+ * Add support for linked cells to the cache manager,
+ netidmgr afs provider, and aklog. When two cells are
+ linked, a volume lookup that fails in one cell is looked
+ up in the other. This can be used for construction of
+ test cells that override specific volumes; cell renaming;
+ and cell splitting.
+
+ * Increase the length of cell and realm names that can
+ be entered in the NIM AFS provider.
+
+ * Actively prevent a 32-bit afsd_service.exe from
+ executing in the WOW64 environment.
+
+ * Protect against invalid IP address values in CellServDB
+ parsing.
+
+Since 1.5.53
+
+ * Fix an Rx panic caused by an attempt to double free
+ an rx_packet when an error occurs while writing the
+ packet.
+
+ * Fix an exception cause by a race condition when
+ processing multiple file change notifications registered
+ by the Explorer Shell or other applications.
+
+ * Modify the Rx debug interface to use var_args and
+ permit Rx debugging to be used on 64-bit Windows
+ which previously had it disabled.
+
+Since 1.5.52
+
+ * Automated lock hierarchy enforcement added to the
+ osi base lock package. This permits detection of lock
+ violations that might but often does not result in
+ deadlocks. Enabled by default in the checked builds.
+ May be activated in release builds via the registry
+ value "LockOrderValidation" in the TransarcAFSDaemon
+ Parameters key.
+
+ When a violation is detection an assertion is thrown
+ generating a dump file and a message indicating which
+ locks were obtained out of order is logged to the
+ Windows Application Event Log.
+
+ * Attempt to ensure that a dump file will be generated
+ whenever the service panics.
+
+ * Removed unused lock cm_bufGetMutex
+
+ * Many out of order lock acquisitions were detected
+ using the lock order verifier and were corrected.
+
+ * A race condition within the function path cm_GetSCache() ->
+ cm_GetNewSCache() -> cm_RecycleSCache() permitted a
+ cm_scache_t object to be issued simultaneously to two
+ threads. This would eventually result in a panic due
+ to the resulting undercount.
+
+ * Fix interpretation of the empty string as the ioctl path
+ to mean the current directory. "fs lsm", "symlink list",
+ etc. now return a "not a ..." error instead of "does not
+ exist".
+
+ * Add SMB_STRF_SRCNULTERM flag to smb_ParseStringXXX functions.
+ to indicate that the input string is a nul terminated string.
+ Assign ti when input strings are nul terminated instead of
+ length counted. (from 1.5.50)
+
+ * The CIFS protocol specification for handling NT_TRANSACT_CREATE
+ does not match the observed behavor. The 'nameLength' is specified
+ in bytes, not in characters. Fix the implementation to match
+ the observed behavior. (1.5.50)
+
+ * The cm_HaveAccessRights() attempt at deadlock avoidance by
+ calling lock_TryRead() on the parent directory cm_scache_t rw-lock
+ does not avoid the deadlock. Avoid the deadlock by enforcing the
+ lock order of the lowest vnode first. Then remove the infinite
+ loop avoidance in cm_SyncOp() that was returning an unwarranted
+ access denied error.
+
+ * File Server lock synchronization was not propertly enforced in
+ smb_ReceiveNTCreateX() and smb_ReceiveNTTranCreate().
+
+ * Another change to the short name generator. Plus and equal are
+ not valid characters in a short name according to the
+ RtlIsNameLegalDOS8Dot3() in kernel mode. They have been replaced
+ with left and right brace in order to minimize the impact.
+
+ * Fix a race condition that can result in a heap overwrite error if
+ the number of known file servers or vldb servers increases during
+ the preparation phase of a cm_CheckServers() operation.
+
+ * If the SMB Authentication would fail, a LSA allocated memory
+ buffer would be leaked.
+
+ * Rewrite the cm_cell_t allocation code to permit cell vldb server
+ lookups to fail without leaking cm_cell_t objects.
+
+ * Add "fs setcrypt auth" to permit the use of rxkad authentication
+ only mode. Not documented.
+
+ * Initialize Rx mutex and lock objects once and only once as part of
+ the DLL load process.
+
+ * When reporting the Volume Name "AFS" do not include the terminating
+ NUL in the reported length.
+
+ * Refresh Volume Location information upon receipt of a VNOVOL error
+ from the file server and avoid a race condition that prevented the
+ updated volume location information from being destroyed immediately
+ after it was acquired.
+
+ * In response to VNOVOL and VMOVED, remove the volume id from the server's
+ volume list so that the volume's up and down status is not affected
+ when the machine is shutdown.
+
+ * Many fixes to the Rx stack related to packet allocation and deallocation;
+ Rx debugging; Rx packet tracking across queues; and Rx packet loss caused
+ by overwriting the rx_call currentPacket pointer when it was already
+ referring to a packet.
+
+ * Rx Jumbograms are now off by default. To re-enable, add "RxJumbo" = "1"
+ in the TransarcAFSDeamon/Parameters key.
+
+ * "fs flush", "fs flushvolume", and "fs flushall" now destroy locally
+ constructed directory B+ trees for flushed directory objects.
+
+ * When cached pages for directory objects have been locally modified, do
+ not permit the locally modified pages to be mixed with pages subsequently
+ obtained from the file server. Doing so can result in directory
+ corruption.
+
+ * If Ubix errors are received in response to VL_xxx operations record
+ the error on the server instance and permit the operation request to
+ be retried in case another server is able to answer the query. We have
+ seen at least one instance of a cell in which a VL server returned
+ UNOQUORUM (possible database truncation) when the other servers were
+ responding successfully.
+
+Since 1.5.51
+ * Optimize the assignment of write errors to dirty
+ buffers by applying the first error to all buffers
+ belonging to the same object instead of trying each
+ buffer in turn.
+
+ * Add resource version info to xstat_fs_test and xstat_cm_test
+
+ * Fix a delete vs delete[] usage problem in the WiX custom
+ handler dll
+
+ * When creating a mount point, validate the volume name to
+ make sure it exists.
+
+ * When processing a mount point, pay attention to VL_BADNAME
+ errors.
+
+ * Remove a race condition from cm_volume_t recycling that could
+ have resulted in two threads making use of the same object at
+ the same time.
+
+ * Fix a reference count leak on smb_vc_t objects introduced in
+ 1.5.50. Permit the objects to be freed once again.
+
+ * Fix the output of "fs memdump" for smb_vc_t objects that was
+ broken in 1.5.50.
+
+ * Add routines for debugging smb refcount errors.
+
+ * When shutting down the cache manager, do not permit AFS
+ callback requests to be processed. Doing so can result in
+ invalid memory accesses.
+
+ * Do not recycle a deleted cm_scache_t object unless the
+ refCount is 0. Doing so can result in a deadlock and
+ invalid memory access.
+
+ * Minimize the number of RPCs sent to the file server for
+ directory bulk status requests. Only request status for
+ objects that we are actually reporting on and only if we
+ do not already have status for the object and then make
+ sure that we return as much as we can at once via the SMB
+ interface but not so much that it exceeds the RDR timeout
+
+ * Enable bos restricted operations
+
+ * Fix the creation of submounts used by the afscreds and afs_config
+ drive mapping tabs.
+
+ * Avoid repeated retries when attempting to obtain access rights.
+ If the access rights were obtained successfully but do not
+ satisfy the request, fail the request.
+
+ * Fix error code reported when attempting delete a file on a
+ readonly volume or one that is marked with the readonly DOS
+ attribute.
+
+ * Fix a short name truncation bug.
+
+ * Fix a heap corruption error when reading the CellServDB file
+ location.
+
+ * Fix directory listings when the directory has "lookup" permission
+ only and the directory has never been previously accessed.
+
+ * Fix several tracking issues for cm_scache_t rw locks.
+
+ * Ensure that all buffers used to store cell names are the
+ correct length.
+
+ * Restore Windows 2000 support (broken in 1.5.50).
+ LOCALE_INVARIANT was introduced in XP.
+
+ * Add RxUdpBufSize registry value. Default is 256K.
+
+ * Avoid multiple deadlocks between cm_freelanceLock and cm_scacheLock
+
+ * Do not include trailing NULs when returning file names in
+ a directory search response.
+
+ * Prevent RX from crashing the afsd_service by attempting
+ to allocate to many buffers at once when memory is fragmented.
+
+ * Avoid a deadlock when freeing cm_server_t objects
+
+ * Optimize search cell file. Do not search to end of file
+ if the cell has already been found.
+
+ * Remove explorer shell extension delay on local disks.
+
+ * Automatically pre-allocate 64 Rx packets per thread
+
+ * Add smb lock requests and stat cache lock allocations to
+ the output from fs memdump.
+
+Since 1.5.50
+ * Fix Large File Support (broken in 1.5.50)
+
+ * Fix "fs setacl" (broken in 1.5.50)
+
+ * Fix pioctl path evaluation of drive letter
+ mapped paths. (broken in 1.5.50)
+
+ * Fix installation of VC8 Runtime library in the EXE
+ Retail installer. (broken in 1.5.50)
+
+ * Avoid a potential deadlock during Volume Location
+ updates if all the file servers are unreachable at
+ the time the VL update succeeds.
+
+ * Ensure that rx connection object is references
+ during VL RPCs.
+
+ * Fix propagation of over quota errors during cm_FSync()
+ calls.
+
+Since 1.5.39 [1.5.50 released 16 July 2008]
+ * There were no releases between 1.5.39 and 1.5.50.
+
+ * FIRST RELEASE WITH UNICODE SUPPORT
+
+ * Pioctl interfaces to the cache manager refactored
+ to provide layering between the SMB specific code
+ and the general purpose ioctl operation.
+
+ * Garbage collect dead SMB virtual circuits as soon
+ as they are no longer being referenced. This avoids
+ problems with outstanding locks not being dropped
+ when the virtual circuit becomes invalid.
+
+ * Remove the IBM Administration Reference documentation
+ and replace it with the OpenAFS Command Reference
+ Manual.
+
+ * Avoid calling rx_SetDeadTime and rx_SetHardDeadTime
+ functions each time a connection is about to be used.
+ Do not hold a lock on the rx connection object while
+ it is being selected. This avoids a race between
+ threads attempting to set the timeout values and
+ removes a bottleneck that was hampering performance.
+
+ * Ensure that the smb directory attribute is set
+ for all directory objects.
+
+ * Add vs2008 support to the NSIS installer scripts
+
+ * Replace the VC Runtime EXE installer with the MSI
+ installer in the NSIS installer scripts
+
+ * Properly delete the VC7.1 C Runtime libraries.
+
+Since 1.5.36 [1.5.39 released 23 June 2008]
+ * There were no 1.5.37 or 1.5.38 releases for Windows
+
+ * Use Visual Studio version of vsprintf() instead of
+ home grown version that resulted in linking conflicts
+
+ * Prevent buserver, ptserver and fileserver from crashing
+ due to non-portable strftime() format strings.
+
+ * Prevent server crashes caused by rx_InitMorePackets()
+ being called prior to allocation of all of the required
+ synchronization objects.
+
+ * Fixed a memory leak in the internal B+ tree directory.
+ For objects with non-8.3 names, the 'longname' memory
+ allocation would be leaked during object deletion or
+ tree destruction.
+
+ * Fixed a memory leak in the background daemon cm_CheckServer()
+ routine. The memory allocated to store the server list
+ was not freed.
+
+ * Obtain a missing lock around a call to cm_RemoveSCacheFromHashTable().
+
+ * Correct an abstraction layer violation. cm_scache_t objects
+ should be marked deleted in cm_Unlink() and cm_RemoveDir() and not
+ in smb_CloseFID(). Cleanup of deleted cm_scache_t objects should be
+ performed in cm_ReleaseSCache() when the reference count hits zero.
+
+ * Prototype cm_AdjustScacheLRU() and re-implement it using osi_QAddH().
+
+ * Do not reference 'smb_logp' in cm_vnodeops.c. Use 'afsd_logp'
+ instead.
+
+ * Ensure that scache object 'nextp' pointers are set to NULL
+ when the objects are removed from the hash table linked list.
+
+ * If a dirty buffer cannot be written to the file server because
+ of an access denied error, mark the error in the cm_buf_t
+ structure so that it can be dealt with instead of retrying
+ forever.
+
+Since 1.5.35
+ * Update CellServDB file to GCO Public 23 Apr 2008
+
+ * Fix a cm_buf_t reference count leak when attempts to write
+ dirty buffers to the file server from within cm_IncrSyncer()
+ fail.
+
+ * Prevent udebug from crashing.
+
+ * Activate RX Idle Timeouts. If the file server is busy for more
+ then 30 seconds, attempt to failover to another server without
+ marking the busy server down.
+
+ * Another VNOVNODE issue fixed. When writing a dirty buffer
+ to the file server, if VNOVNODE is received, mark all buffers
+ as invalid without further attempts to contact the file server.
+
+ * Improved performance on high latency links.
+
+Since 1.5.34
+ * Fix a bug preventing the re-initialization of the Freelance
+ root.cell contents when a change is made.
+
+ * Properly return CM_ERROR_NOSUCHFILE when removing a symlink
+ or mountpoint that does not exist.
+
+ * aklog, afscreds, integrated logon, and the NIM AFS credential
+ provider will all attempt to first acquire an afs service ticket
+ using the service principal: afs/<cell>@<CLIENT_REALM>. This
+ permits the proper detection of the cell realm when multiple
+ realms are local realms for the cell.
+
+ * Fix fs commands that re-use file identifiers instead of forcing
+ a path evaluation each time. This was broken in 1.5.33 when
+ hashes were added to the cm_fid_t structure.
+
+ * Fix symlink and mountpoint removal and then recreation when
+ applied to the fake Freelance root.afs volume.
+
+ * Fix SMB change notifications for the Freelance root.afs volume
+ when creating or removing symlinks and mount points.
+
+ * Force DNS AFSDB cell name lookups to lower case if the DNS
+ response is not all lower case.
+
+ * 32-bit installers are now built with Visual Studio 2005
+
+ * All vos.exe commands now support the "-noresolve" option which
+ forces the display of IP addresses instead of DNS hostnames.
+
+ * No longer hold the cm_volume_t mutex across VL_xxx RPCs. This
+ permits operations that do not require up to date volume
+ location data to continue while waiting for the RPC to complete.
+ Multiple threads waiting for a volume location update on the
+ same volume set no longer trigger multiple calls VL_xxx RPCs.
+
+ * Volume server references could be marked offline and never
+ reset to the not_busy state.
+
+ * Further optimizations to cm_Analyze() retry logic for
+ CM_ERROR_OFFLINE and CM_ERROR_ALLBUSY error handling.
+
+Since 1.5.33
+ * Optimize the DNLC by applying Interlocked incrementing for
+ statistics gathering and enabling greater use of read
+ locks instead of write locks
+
+ * Further optimize osi_Log operations when logging is disabled
+ by removing the need for the function call overhead.
+
+ * Add a new lock operation, Convert Read to Write, and apply
+ it throughout the cache manager. This function provides a
+ fast transition from a read lock to a write lock when the
+ caller is the only reader.
+
+ * Fix a timeout problem when opening files or request locks
+ when the file in question is already write-locked by another
+ machine.
+
+ * Fix a deadlock that can occur if "fs flushall" is executed
+ while applications are writing to AFS.
+
+ * The cache manager would re-read data from the file server
+ after file truncation when obtaining buffers to write to the
+ same file until the first StoreData RPC completes.
+
+ * Fixes error handling in cm_NTCheckDelete()
+
+ * Replaces cm_scache_t mutex with a read-write lock permitting
+ additional parallel access.
+
+ * Prevent an cm_scache_t reference undercount when evaluating
+ symlinks containing @sys when none of the active sysnames
+ match any of the available targets.
+
+ * Prevent the leak of a cm_scache_t rwlock if associated symlink
+ is too long.
+
+ * Set RxMaxMTU registry value to 0 which is the equivalent of
+ it not being set at all.
+
+ * Reduce contention between BkgDaemon threads
+
+ * Prevent CM_SCACHEFLAG_ASYNCSTORE from being reset on a write
+ failure
+
+ * Convert reference counts on cm_volume_t, cm_conn_t, cm_server_t
+ objects to use the faster Interlocked operations which avoid
+ the need to hold write locks.
+
+ * Permit rxkad errors other than RXKADEXPIRED to be treated as a
+ non-fatal error that forces a retry against another service
+ (if available.)
+
+ * Fix a crash in smb_WriteData that would occur if an application
+ opened the file as read-only and then sent a write request anyway.
+ (RT 88731)
+
+ * Respond to VL_NOENT errors by removing cm_volume_t object and
+ setting it to be the first object to be recycled. This is not
+ only a more efficient use of resources but it also prevents
+ repeated attempts to query the VLDB server for the volume from
+ the CheckOfflineVolumes routine.
+
+ * Change the defaults for RxEnablePeerStats and RxEnableProcessStats
+ back to "on".
+
+ * A first cut at a cache manager statistics monitor that can be used
+ to determine the necessary cache parameters to support the
+ application working set.
+
+ Off by default, the performance package can be activated by setting
+ "daemonPerformanceTuningInterval" in the service Parameters key.
+ As with the other daemon interval values the unit is in seconds.
+
+ At service start and each succeeding interval the cache manager
+ will write statistics to %TEMP%\afsd_performance.txt showing the
+ relative usage of cm_scache_t, cm_volume_t and cm_buf_t objects.
+ The FID statistics keep track of all FIDs seen by the cache manager
+ during the service session whether or not they are backed by any
+ live object in the cache.
+
+ These statistics are not stored in the cache file.
+
+ * Fix windows event logging broken in 1.5.33.
+
+ * Eliminate multiple calls to syscfg_GetIFInfo() which is used to
+ populate the IP address list for WhoAreYou/TellMeAboutYourself RPCs
+ as well as when computing the server preference list.
+
+ * When merging status after a StoreData operation prevent data
+ buffers from being discarded that we would prefer to keep.
+ (Bug introduced in 1.5.33.)
+
+ * Modify installers the set RxMaxMTU to 0.
+
+ * In the AFS Configuration Panel on the Advanced->Miscellaneous
+ dialog, the Background Daemons and Service Threads fields were
+ swapped.
+
+ * Increase default number of Background Daemons to 4.
+
+ * Remove cm_volume_t reference from the cm_scache_t object. Permit
+ cm_volume_t objects to be recycled.
+
+ * Windows Error Reporting has shown a number of previously unseen
+ stack corruption errors in the Explorer Shell extension. The
+ minidump appeared to indicate the problem was in ParseAcl().
+ Reviewing the function it appears that numerous things could go
+ wrong if invalid input was provided. Added error checking and
+ data validation. Hopefully this will address the problem.
+
+ * Windows Error Reporting has shown crashes in aklog as a result
+ of krb5_cc_get_default() failures not being handled. They are
+ now handled.
+
+Since 1.5.32
+ * The Rx library used a 32-bit type for sockets which was
+ truncating the socket value on 64-bit Windows. This
+ was not an issue in general but became an issue when
+ Rx "hot thread" support was enabled.
+
+ * Enable "Rx hot thread" support which ensures that while
+ a received message is being processed that a new thread
+ is allocated to receive the next message to arrive.
+
+ * Increased parallel access to smb_rctLock protected
+ resources. Reduce the number of times that the
+ lock is dropped and re-obtained.
+
+ * Increased parallel access to cm_scache_t and cm_buf_t
+ resources by replacing the previous global write lock
+ protected reference counting mechanism with one built
+ upon the use of InterlockedIncrement and InterlockedDecrement.
+
+ * Implement a hash for cm_fid_t to reduce comparison costs
+ and inline the cm_FidCmp() function.
+
+ * Redefine the BUF_HASH and BUF_FILEHASH in terms of the cm_fid_t
+ hash which has a better distribution
+
+ * Modify cm_ConsiderPrefetch to evaluate the amount of data in
+ the most recent read request instead of the next chunkSize.
+ cm_chunkSize can be dozens or hundreds of buffers. As a result
+ too much time is spent performing the evaluation.
+
+ * Fix the usage of cm_scache_t bufCreateLock. The purpose of this
+ lock is to prevent the creation of new buffers while a truncation
+ is being performed. All references to bufCreateLock have been
+ removed except in two places:
+ i. a write-lock surrounding the function that calls buf_Truncate()
+ ii. a read-lock within buf_GetNewLocked() that actually allocates
+ new buffers
+
+ * Modify the CM_CONFIG_DATA_MAGIC value to include a
+ CM_CONFIG_DATA_VERSION number which value be used to force the
+ replacement of the cache file contents when incompatible changes
+ are made between releases.
+
+ * CM_SCACHESYNC_ASYNCSTORE should not be ordered by
+ cm_SyncOpCheckContinue
+
+ * Avoid calls to multi_Rx if nconns == 0
+
+ * Modify smb_WriteData to perform background writes based upon the
+ crossing of 'smb_AsyncStoreSize' boundaries instead of cm_chunkSize
+ boundaries. This will slow down writes from the SMB interface but
+ will avoid the risk of the CIFS client disconnecting from the AFS
+ client SMB server. The default value for 'smb_AsyncStoreSize'
+ is 128K.
+
+ * SMB AsyncStore functionality is on by default but can be
+ disabled using the registry value:
+
+ HKLM\SOFTWARE\OpenAFS\Client DWORD "EnableSMBAsyncStore"
+
+ smb_AsyncStoreSize can be adjusted with
+
+ HKLM\SOFTWARE\OpenAFS\Client DWORD "SMBAsyncStoreSize"
+
+ The value must be a multiple of the buffer block size
+ and cannot be larger than the chunk size.
+
+ * Do not leak a read lock on the bufCreateLock
+
+ * Do not forget to call cm_SyncOpDone if cm_SyncOp succeeded
+ in cm_CheckNTOpen()
+
+ * In MergeStatus, only remove clean buffers from the hash table.
+
+ * Avoid the need to update the data version number on each buffer
+ associated with a scache when MergeStatus is called after a
+ StoreData by maintaining a range of valid data versions as part
+ of the cm_scache_t object.
+
+ * Profiling shows large numbers of blocked calls in cm_HoldSCache
+ from cm_HaveAccess... We can safely avoid the call so do so.
+
+ * Add "ForceAnonVLDB" service parameters registry value. Default
+ is 0. Set to 1 to force the use of anonymous connections to
+ the VLDB servers. This is useful when using krb5 tokens and the
+ VLDB servers have not been updated.
+
+Since 1.5.31
+ * Do not attempt to search for a cell name that matches one
+ of the special share names "svrsvc", "wkssvc", "ipc$"
+
+ * Issue permission denied warnings from afscreds if attempts
+ to modify the startup shortcut or registry values fail.
+ This happens under Vista UAC.
+
+ * Do not return BAD_NETWORK_ERROR in response to attempts
+ to create directories or files in the Freelance root.afs
+ volume. Instead return ACCESS_DENIED.
+
+ BAD_NETWORK_ERROR was being sent because the Freelance cell
+ has no vldb servers. Short circuit the error by testing for
+ freelance in CreateFile and MakeDir
+
+ * Treat srvsvc, wkssvc and ipc$ as pseudo files. Permit them
+ to be opened and closed without actually existing. For now
+ we treat them as equivalent to ioctls but this should
+ eventually change.
+
+ * Fix RAP processing to not reject names that exist in the
+ root.afs volume for GetInfo queries.
+
+ * In afscreds, use GetUserNameEx to obtain the username instead
+ of searching the registry. Try UserPrincipalName first and
+ fallback to SamCompatible.
+
+ * Stop linking to rpcns4.dll which is no longer supported on
+ Vista and 2008. TaAfsAdmSvr is going to have to be
+ redesigned.
+
+ * When processing dfs referral requests, if the sharename is
+ a partial match and therefore will not be added automatically
+ to the share list, make sure that we return an error.
+
+ * Avoid a crash when logging VNOVOL errors returned from
+ cm_CheckOfflineVolume.
+
+ * When trace logging is disabled, do not permit osi_LogSaveString
+ to perform the string copying. By disabling the string
+ copies, throughput of the service more than doubles.
+
+ * when checking offline volumes, update the cell vlserver info
+ if required and don't perform a check if there are no servers
+ in the list.
+
+ * Add volumes in the vl_unknown state to the list of objects to be
+ checked as offline or retried when an allbusy error is received
+ in cm_Analyze.
+
+ * Add support for configuring rx_ExtraPackets
+
+ * All calls to buf_Get() must be protected by a read lock on the
+ cm_scache_t bufCreateLock
+
+ * When a MergeStatus results in the invalidation of buffers, do
+ not remove buffers from the hash tables that have active references.
+
+ * Upon receiving a VNOVNODE error from a file server, be sure to
+ invalidate any file locks. This prevents on-going attempts to
+ extend the locks and will cause subsequent attempts to access
+ the file to receive a invalid handle error.
+
+ * Prevent smb_ReceiveTran2SearchDir from adding terminating NULs
+ to directory entry names.
+
+ * No longer discard tokens when RXKADBADTICKET error is received.
+ Instead return STATUS_NO_KERB_KEY error.
+
+Since 1.5.30
+ * Add "cmdebug <host> -cellservdb" option and client service
+ implementation permits querying the vldb server for each
+ cell known to the cache manager. The output is in a form
+ that permits it to be used as a CellServDB file.
+
+ * Add Symlinks->Show option to the AFS Explorer Shell Context
+ Menu
+
+ * Prevent buffer overrun in the cmd parser used by command
+ line tools such as fs, vos, pts, etc.
+
+ * The path ioctl operations have several issues:
+
+ (1) the specified path for "fs examine, whereis, whichcell,
+ flush" and so always has the follow symlinks and mount
+ points semantics. This makes it impossible to determine
+ what the FID of a symlink or mount point is.
+
+ (2) "fs examine" out is not the result of a single pioctl
+ operation but is actually the combined output of half
+ a dozen operations. Path evaluation is an expensive
+ operation. It would be faster if the caller could
+ evaluate the FID first and then perform all of the
+ rest of the operations by specifying the FID instead
+ of the path.
+
+ (3) fs output reports all objects as files. By adding a
+ GetFileType pioctl more informative output can be provided
+ that indicates what type of object the path evaluates to.
+
+ (4) the Windows fs command includes a number of commands that
+ do nothing but exist only because the Unix cache manager
+ supports them.
+
+ A new extendible data structure cm_ioctl_query_opts_t has been
+ added which can be optionally specified with pioctls that do not
+ already require input data. The first two fields of this structure
+ are 'literal' and 'fid'. The literal field is used to indicate
+ whether the last component of the path should be evaluated following
+ symlinks and mount points.
+
+ The fid field permits a fid to be specified.
+
+ * A new GetFileType pioctl has been added. The type of objects are
+ now output.
+
+ * A new "-literal" option is available for "fs examine, flush, whereis,
+ and whichcell.
+
+ * Unimplemented fs commands have been removed.
+
+ * There are circumstances where a volume object is being accessed and
+ the volume is marked indicating that the volume location information
+ is out of date but where it is also pointless and perhaps dangerous
+ to block waiting for the rpc to complete. One example is when
+ processing the cmdebug requests. If we know that we are not going
+ to use the volume object to contact a server, then we can now set
+ the CM_GETVOL_FLAG_NO_RESET flag.
+
+ * when moving up in the directory tree we search the recorded fid list
+ to find a matching fid that we have already crossed. we must also
+ reset the fid count based upon what we discover.
+
+ * Cell names are published as share names. As a result they are searched
+ for as part of the Dfs Referral evaluation. If share "foo" can not be
+ reached, the CIFS client will fallback to searching for "fo" as well.
+
+ Since the freelance client automatically adds a symlink for prefixes
+ of the cell name, this results in both "foo" and "fo" being added to
+ the freelance root.afs volume. This patch prevents that negative side
+ effect.
+
+ * when tracking Kerberos credential cache names be sure to include
+ the cache type prefix.
+
+ * Microsoft has assigned OpenAFS a network type value
+
+ * The algorithms that were used to produce a Netbios name were broken.
+ The name that was produced when the hostname was too long was in fact
+ longer than the maximum permitted netbios name.
+
+ Also, the "NetbiosName" value was not used as a suffix when the loopback
+ adapter was not installed. The hardcoded string "AFS" was used instead.
+
+ * avoid another deadlock during server probes initiated by the ipaddr
+ change daemon thread.
+
+ * prevent the afs client service from crashing when fs newcell is
+ executed
+
+ * In the NSIS installer, move afslogon.dll, afscpcc.exe and afs_cpa.cpl
+ to \Program Files\OpenAFS\Client\Program in order to get them out
+ of the %windir% tree
+
+ * EDQUOT == WSAEDQUOT. Define it in the right places so that in the
+ end STATUS_OUT_OF_QUOTA can be returned to the application.
+
+ * Modify the search order for determining the location of CellServDB
+ and other client configuration files.
+
+ 1. AFSCONF environment variable
+ 2. registry setting
+ 3. NEW - use All Users\AppData\OpenAFS\Client only if CellServDB exists
+ 4. use Program Files\OpenAFS\Client
+
+ * More Vista Power Management tweaks
+
+ * Close a socket handle leak in the kauth routines
+
+ * Don't hold a cm_volume_t mutex across RPCs
+
+ * Convert downTimes to use clock time instead of relative times.
+ This permits correct comparisons with expiration times.
+
+ * Update the Wix installer to properly install the prerequisites
+ for translate_et.exe
+
+ * Do not translate pioctl paths as they are not converted by the
+ file system stack.
+
+ * Implement multi_rx probes for checking whether servers are up
+ or down. Turns probes into a constant time activity instead
+ of one dependent upon the number of known servers.
+
+ * Treat VNOVOL errors the same as VOFFLINE. Do not force an
+ update of the volume location data and retry. VNOVOL means
+ that the volume could not be attached. It doesn't mean that
+ the volume is not on this server.
+
+ * Modify the Explorer Shell AFS Context menu Symlink->Add to
+ not attempt to validate the target path. There is no reliable
+ method of doing so.
+
+ * Improve performance of \\afs\<cell><mount-type><volume>\
+ access by eliminating extraneous attempts to search the
+ CellServDB file and DNS AFSDB records. Share names
+ containing '%' or '#' are not valid cell names.
+
+ * Return STATUS_RANGE_NOT_LOCKED if the application attempts
+ to unlock a range that is not currently locked.
+
+ * Enable the 32-bit tools to read the 64-bit registry keys
+ when executing in the WOW64 environment.
+
+
+Since 1.5.29
+ * Fix buffer refcount leak introduced in 1.5.29
+
+ * Prevent the NIM AFS Provider from crashing when configured to use
+ Kerberos v4 for token acquisition in situations where no Kerberos v4
+ support is available. For example, 64-bit KFW or sites that delete
+ the Kerberos v4 DLL.
+
+ * In afsd_init.log, support logging cache sizes greater than 2GB.
+
+ * The volume status output of "fs examine" was being determined based
+ upon the wrong error value. Instead of using the pioctl() return
+ code, the errno value must be used.
+
+ * Prevent invalid pts auto-registration attempts by aklog and the
+ NIM afs provider when Kerberos referrals are in use. (krb5 1.6+)
+
+ * Add synchronization protection to all of the SMB Listener State
+ variables. This prevents race conditions when the addition or
+ loss of a network adapter takes place.
+
+ * On Vista, there is a race condition between the restart of the
+ afs client service and the network adapters. Ensure that the
+ afs client service can handle switching between loopback and
+ non-loopback modes of operation.
+
+ * Fix FollowBackupPath to work with mount points that are not
+ explicitly read/write.
+
+ * Fix a deadlock that has been observed on Vista while resuming
+ after at least four hours of sleep.
+
+ * Add new HKLM registry configuration options that can be used
+ to provide configuration hints to the NIM AFS Provider when
+ creating new identities. See release notes for details on
+ HKLM\SOFTWARE\OpenAFS\Client\Realms\.
+
+Since 1.5.28
+ * Speed up write buffer operations by holding a global read-lock
+ instead of a write-lock when updating the buffer data version
+ number. The data version is protect by the associated stat
+ cache mutex.
+
+ * Speed up read buffer operations by removing out of date buffers
+ from the buffer hash tables.
+
+ * Protect against a null pointer dereference in afslogon.dll
+ if QueryAdHomePathFromSid() fails.
+
+ * Remove a race condition while accessing private freelance data
+ structures.
+
+ * Update the buffer data versions when Freelance directory data
+ changes.
+
+ * Complete the implementation of smb_ReceiveTran2GetDFSReferral().
+ Critical for Vista.
+
+ * Return EAS_NOT_SUPPORTED in response to EA read/store/query
+ instead of returning zero length.
+
+ * Return ERROR_RETRY when a server sends VBUSY.
+
+ * Return PATH_NOT_COVERED instead of BADSHARENAME for DfsLinks when
+ a volstat plug-in is in use.
+
+ * Enhance the volstat interface to support Dfs path mappings.
+
+ * Fix "symlink list" to do the right thing for Dfs links
+
+ * Fix callback expiration that was broken in 1.5.27.
+
+ * Fix a crash at shutdown caused by the lack of synchronization
+ within the daemon threads (cm_Daemon, cm_BkgDaemon, cm_IPAddrDaemon)
+
+ * Hold the cm_server_t mutex while walking or modifying the
+ cm_server_vols_t list in order to avoid a race condition.
+
+ * Ensure that the cm_server_t refCount is safely modified.
+
+ * The pthread library implementations of pthread_cond_wait
+ and pthread_cond_timedwait were failing to return with
+ the mutex held when error conditions occurred. This could
+ result in race conditions wherever they are used. One case
+ in which problems were seen was the Rx event_handler().
+
+ * Prevent cm_GetBuffer() from locking all buffers associated with
+ a stat cache object before deciding if the current buffer is up
+ to date.
+
+ * Fix cm_BkgPrefetch to actually ensure that there is a cm_buf_t
+ object for each offset that we will attempt to reserve.
+
+ * Reduce the default number of background daemon threads used to
+ prefetch or store to one in order to prevent two or more threads
+ from stepping on each other.
+
+ * Reduce the default chunk size to 256KB in order to prevent read
+ timeouts on low bandwidth connections.
+
+ * Fix a race condition that could result in threads becoming stranded
+ when synchronizing multiple requests on the same stat cache object.
+
+Since 1.5.27
+ * The GiveUpAllCallBacks functionality that was added in 1.5.21
+ has been disabled. It has been disabled because it turns out
+ that the RPC is improperly implemented in all file servers
+ previous to 1.4.6. The RPC is executed without the proper
+ locks being held resulting in data corruption and eventual file
+ server failure. The functionality will be re-enabled in a
+ a few months.
+
+ * a couple of .readonly Volume Callback optimizations were
+ implemented:
+ - Apply most recent volume callback to all stat cache objects
+ in the volume. This avoids premature callback expirations
+ and unnecessary FetchStatus calls.
+ - Add option to permit attempts to renew .readonly Volume
+ Callbacks on a periodic basis to avoid invalidation of stat
+ cache data. [Requires daemonCheckVolCBInterval be set to
+ non-zero number of seconds. 1800 (30 minutes) is suggested.]
+
+ * Adds support for 64-bit data version values. Previous releases
+ only supported 32-bit values. Larger values sent by the file server
+ would result in rollover.
+
+ * aklog and asetkey no longer generate an exception if Kerberos for
+ Windows is not installed.
+
+ * If the LSA authentication functions report a temporary out of memory
+ condition, fail the current authentication and do not cause the AFS
+ client service to terminate unexpectedly.
+
+ * When the AFS client service is shutting down, prevent the daemon check
+ thread from executing additional checks which might attempt to access
+ discarded locks or unmapped memory.
+
+ * Correct a double free condition in the NIM AFS credentials provider.
+
+ * Add "FollowBackupPath" service parameter registry value.
+ This provides equivalent functionality to the UNIX afsd -backuptree
+ option. When set to a non-zero value, normal mount points originating
+ in a .backup volume will prefer a .backup volume.
+
+Since 1.5.26
+ * Fix NSIS uninstall from the .MSI installer.
+
+ * Add Stack Frame logging for AMD64
+
+ * Add support for EWOULDBLOCK to cm_Analyze. If the file
+ server returns EWOULDBLOCK, retry the request every two
+ seconds for up to the RDRtimeout.
+
+ * Reorganize the order of the includes to ensure that EWOULDBLOCK
+ is not assigned the same value as EIO.
+
+ * Update CellServDB to GCO Public 25 Oct 2007
+
+ * Add additional validation and error handling code after
+ each call to getSlot(). If an invalid slot is returned,
+ return NONODE. If the invalid slot is returned when
+ extracting a data node, invalidate the tree.
+
+ * Modify compareKeys() to always perform a case-insensitive
+ comparison and only perform a case sensistive comparison
+ if the case-insensitive one matches. This ensures the
+ ordering is consistently reported.
+
+ * Add lock assertions to ensure that all calls are being
+ performed with the correct locks being held. There have been
+ some crash reports that provide stack data that does not appear
+ to be possible unless there is a race. However, there are no
+ obvious locations where the race is taking place and the test
+ suite indicates that all of the correct locks are being held.
+ We shall see what happens in the field.
+
+ * For consistency replace all calls to findKey in which the range i
+ s (1,numentries) with calls to getSlot().
+
+ * Optimize the depth search loop by testing the slot value in the
+ for statement instead of forcing the loop to be broken later.
+
+ * Reorganize the locking for cm_BeginDirOp and cm_EndDirOp.
+ There are a number of locations where locks are obtained, dropped,
+ and reobtained. This reorganization attempts to accomplish several
+ things:
+
+ (1) be optimistic for the most common case so it will be fast
+
+ (2) add consistency checks after each location where locks are
+ dropped and re-obtained. If we lose a race in cm_BeginDirOp
+ and the bplus tree is out of date, retry until we get to a
+ consistent state that we can use.
+
+ (3) Ensure that all operations take place with the correct locks.
+
+ * One of the issues that has become a serious problem since the
+ addition of the local directory updates is that although cm_SyncOp
+ synchronizes operations, it does not preserve the order of requests.
+ This has always been a problem in that it has been possible for a
+ request to fail to complete due to its worker thread's bad luck.
+ When a request takes longer than the Windows SMB Redirector's timeout,
+ the SMB Redirector tears down the SMB virtual circuit.
+
+ When using the local directory updates it is really important that
+ the directory update operations complete in the order that they were
+ sent to the file server. If they don't, then the local directory state
+ and the file server state will not match and the local directory state
+ must be discarded which in turn forces a new read of the entire
+ directory contents over the network.
+
+ This patch adds a new cm_scache_waiter_t object that is used to store
+ the current thread, buffer, and syncop flags within a waiters queue
+ on each cm_scache_t object. If a thread is forced to sleep in
+ cm_SyncOp, upon waking it will check to see if there are any other
+ threads waiting that are attempting to perform a similar task ahead
+ of it in the queue. If yes, the thread goes back to sleep. If not,
+ it goes ahead and enters the cm_SyncOp conflict resolution block.
+
+ This patch has the additional side effect of reducing the number of
+ competing threads that must obtain the cm_scache_t mutex and process
+ the cm_SyncOp conflict resolution block. As a result, the overall CPU
+ utilization of the service and the clock time associated with processing
+ requests will be reduced.
+
+ * assert that the cm_scache_t mutex is held when calling
+ buf_ForceDataVersion().
+
+ * rename findNode to leafNode in bplus_Lookup
+
+ * replace all OutputDebugString calls with osi_LogX calls
+
+ * modify bestMatch to special case the return values for leaf nodes.
+ If an entry is above or below the values available in the leaf node
+ return BTLOWER or BTUPPER instead of BTERROR.
+
+ * In insert and delete operations check for BTLOWER/BTUPPER and isleaf,
+ if true convert to either slot 0 or Max and perform the insertion.
+ This produces easier to read code when performing lookups.
+
+ * modify lock_AssertXXX macros to call osi_assertx() and provide a
+ descriptive message.
+
+ * the difference between osi_assert() and osi_assertx() is whether or not
+ a description is specified as part of the call. When no message is
+ specified afsd_notifier() is called with a NULL msgp parameter. This
+ results in a null pointer dereference during the EventLog() call.
+
+ As a result, none of the information describing the assertion is written
+ to the log file.
+
+ This commit sets a default message for use when no other message is
+ provided and it replaces all calls to osi_assert with osi_assertx and
+ adds descriptions.
+
+ * Migrate B+ tree search key into thread local storage
+
+Since 1.5.25
+ * Fix an uninitialized variable in lana_IsLoopback() which
+ could result in a random determination that a loopback
+ adapter is not a loopback adapter. This would result in
+ a computed Netbios service name of %MACHINE%-AFS instead
+ of AFS. This is a serious problem if the value computed
+ by the AFS Client Service and the client process pioctl
+ calls produce different results as it will result in a
+ communication failure.
+
+ * Fix a crash in the B+ Tree code that results when a file
+ rename only results in a change of case.
+
+ * Fix the pioctl path parsing. The previous algorithm
+ broke the current directory of the client into two parts,
+ the TIDpath which represented the device root and the
+ relative path. The problem is that this is not sufficient
+ from proper processing of symlinks and mount points.
+
+ What is required is that the last component of the path
+ must not have the symlink or mount point be evaluated
+ whereas symlink and mount point evaluation must be performed
+ for the rest of the relative path. Therefore, the path is
+ now split into three parts: TIDpath, intermediate path,
+ and last component.
+
+ "fs examine" now reports the data of the symlink or mount
+ point object instead of the target and "symlink list" and
+ "symlink remove" now works. The "Explorer Shell Extension"
+ menu now is displayed for symlink objects.
+
+ * More informative symlink.exe error messages.
+
+ * When the cmd.exe "del" command is used to remove a symlink,
+ not only was the link object removed, but the stat cache
+ object for the target was marked deleted. This resulted
+ in cache corruption which would require the destruction
+ of the cache to correct.
+
+ * Add undocumented registry value, "OfflineReadOnlyIsValid"
+ which results in cached contents from read only volumes
+ to be treated as valid when there is no callback registered
+ and all servers are down or all instances are offline.
+
+ HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters
+
+ * Add documented registry value, "AcceptDottedPrincipalNames"
+ which is used to permit the acquisition of AFS tokens
+ using Kerberos v5 principal names which include a dot in
+ the first component.
+
+ {HKLM\HKCU}\Software\OpenAFS\Client
+
+ * "fs uuid" does not require "AFS Client Administrator" group
+ membership to display the current UUID value.
+
+Since 1.5.24
+ * Update NSIS installer to version 2.30
+
+ * Update Wix installer to version 2.0.5325
+
+ * 64-bit KFW support:
+ - Network Identity Manager plug-in
+ - 64-bit aklog
+ - 64-bit krb5 enable afscreds.exe, afs server manager,
+ etc.
+
+ * Enable B+ tree Directory Search by default.
+
+ * NIM plug-in is now compatible with FILE: ccaches
+
+ * Install instloop.exe into Client/Programs/ even though
+ it isn't required. Permit it to be used by organizations
+ that clone Windows systems.
+
+ * On a suspend, only drop callbacks for servers that
+ are online. If the server is offline, maintain the callback
+ until the server is once again available.
+
+ * Prevent against acquisition of a directory write lock when
+ there are no updates to be performed. This was resulting
+ in a write-lock leak which later on would lead to a deadlock.
+
+ * Add configurable file pre-fetch mode. For files that match
+ the specified file extensions, pre-fetch the entire file into
+ the cache.
+
+ HKLM\SYSTEM\CurrentControlSet\Services\TransarcAfsDaemon\Parameters
+ (MULTI_SZ) PrefetchExecutableExtensions
+
+ * Fix the client_osi large integer support so that return values
+ can be properly assigned to large integer variables.
+
+ * Do not hold cm_scache_t mutex across cm_GetCell() calls
+ since cm_GetCell() can block in a RPC.
+
+ * Add short file name support to B+ tree searches.
+
+ * Resolve a conflict between the desire to notify file servers
+ that the client workstation is suspending and the desire to
+ permit objects with valid callbacks when the client suspends
+ to continue to use those objects from the cache if the client
+ resumes without network connectivity.
+
+ * Fix stack variables to ensure that all buffers storing paths
+ can handle AFSPATHMAX (1024) characters. Paths of 256 characters
+ would cause a stack overflow condition.
+
+ * On Vista, force afs_config.exe to run with the highest privileges
+ available to the end user. For a user in the Administrators
+ group running under UAC, this will cause afs_config.exe to be
+ be run with full Administrators privileges after the user
+ approves the privilege escalation.
+
+ * More VNOVNODE handling issues. If a dirty buffer cannot be
+ written due to VNOVNODE, clear the buffer and ignore the error.
+ If a cm_scache_t object has been marked deleted due to a VNOVNODE
+ error, the next time the smb_fid_t object that references it is
+ used return either NOSUCHFILE or NOSUCHPATH and close the
+ smb_fid_t object. Subsequent attempts to use the smb_fid_t will
+ result in an invalid handle error.
+
+ * For Vista, set the RequestExecutionLevel of the NSIS installer
+ to "admin".
+
+ * For the build environment, support the generation of manifests
+ when using the CL1310 (VS .NET 2003) compiler/linker.
+
+ * There was a bug in OutputDebugHexString() which could overflow
+ a stack buffer resulting in unexpected process termination
+ of afsd_service.exe if the input Security Token contained
+ many bytes equivalent to the '%' char.
+
+ * Add directory lookup statistics to "fs memdump" output.
+
+
+Since 1.5.23
+ * Windows uses case-insensitive file name pattern matching
+ but AFS is a case sensitive file system. The AFS3 directory
+ format is block based, uses network byte order and
+ includes a hash table for fast case sensitive lookups.
+ This causes several problems for the Windows AFS client.
+ (1) Traversing the directory blocks is cpu expensive
+ (2) A hash table miss does not indicate that the desired
+ entry does not exist.
+ (3) Determining whether a non-ambiguous inexact match or
+ the entry does not exist requires a linear traversal
+ of the entire directory.
+ These issues often result in 100% CPU utilization.
+
+ These issues are addressed by building a modified B+ tree for
+ each directory and then using the B+ tree for searches.
+
+ This feature is disabled by default. To enable it set
+ the "BPlusTrees" registry value to 0x01 in the AFS Client
+ Service Parameters key.
+
+ * Correct a null pointer dereference in the symlink recursion
+ detection code. (Introduced in 1.5.22)
+
+ * Add the Network Identity Manager AFS Provider to AMD64
+ builds.
+
+Since 1.5.22
+
+ * A new registry value, "BlockSize", can now be used to adjust
+ the size of the internal buffers used to store file data.
+ The default is 4KB. When set, the values 1..1024 specify
+ multiples of 4KB. Values > 1024 specify actual block sizes
+ and must be multiples of 4KB. The actual block size in KB
+ can not be larger than the chunk size which defaults to 1MB.
+
+ HKLM\SYSTEM\CurrentControlSet\Services\TransarcAfsDaemon\Parameters
+ (DWORD) BlockSize
+
+ * pts.exe and ptserver.exe built with -DSUPERGROUPS
+
+ * Service Manager shutdown hints have been added. The hint
+ specifies that it may take the AFS client service up to two
+ minutes to shutdown.
+
+ * Fix the recursion detection feature introduced in 1.5.22.
+ The previous implementation broke the evaluation of paths
+ using ../path or ./path. It also broke the evaluation of
+ symlinks to absolute paths. For example, /afs/cell/path.
+
+ * Fix an uninitialized variable in cm_MakeDir that could result
+ in crash if the requested directory could not be created.
+
+ * Fix a the VolumeStatusNotification log messages to save
+ the input string in the circular log buffer so garbarge
+ won't be output to afsd.log when the log is dumped.
+
+
+ * Increase the SMB Maximum Path length to 260 characters
+ from 256 as that is what CIFS supports.
+
+ * On 64-bit Windows, use a unique description string for
+ the 32-bit AFS Shell Extension.
+
+Since 1.5.21
+
+ * In the AFS Admin Library, replaced all of the
+ Ubik_Call(XXX_RPC,...) calls with Ubik_XXX_RPC(...). This
+ allows parameter checking and proper type conversions to be
+ performed. This is crucial when passing parameters that are
+ 64-bit wide on systems in which 'long' is a 32-bit value.
+ Otherwise, the parameter list on the stack is interpretted
+ incorrectly and the function not only doesn't succeed but it
+ might corrupt memory and if lucky crash the application.
+
+ The only program that we care about that uses this library
+ is the AFS Server Manager. Now it doesn't crash.
+
+ * Fixed smb directory searches for non-wildcard names. The
+ optimized function should not have set the bulk in progress
+ flag. This would adversely affect later directory searches
+ that required a bulk search.
+
+ * Detect infinite recursions (up to 512 stat cache objects
+ in a chain.) If an infinite recursion is detected, return
+ an error to stop the CIFS client from querying us forever.
+
+ * Executables executed out of AFS name space can have their
+ pages swapped out by Windows. Those pages will be reloaded
+ when they are required. However, if the cache manager no
+ longer has a callback and all of the file servers with
+ the volume data are down, then the application will crash
+ due to the inability to read the required page.
+
+ We now track the down time of each server. If the callback
+ expires after the server that issued it went down and all
+ servers are down, we delay the expiration to permit the data
+ in the cache to be continue to be used by Windows or an
+ application.
+
+ * The Windows AFS client has always had very poor performance
+ with regards to directory management. In the case of
+ directory updates caused by create, rename,and delete operations,
+ the AFS cache manager will now perform local directory updates
+ when possible in order to avoid re-reading the directory from
+ the file server. This will be done in whenever both of the
+ following conditions are true:
+
+ - the data version on the directory increased by one as a
+ result of the operation
+
+ - all of the directory buffers necessary to make the change
+ are present in the cache
+
+ * The error message in the AFS Control Panel describing the
+ need to be a Windows Administrator has been replaced with
+ a message describing the need to be in the AFS Admins Group.
+
+ * If the vldb server list is empty when attempting to evaluate
+ a cell mountpoint it was possible for a crash to occur. This
+ can only happen if there is an existing mount point and the
+ is a failure attempting to load the server list from the
+ CellServDB file or via AFSDB queries.
+
+ * dirty buffers only have their dirty bytes stored to the file
+ server instead of the entire chunksize
+
+ * the default chunksize has been increased from 128KB to 1MB
+
+
+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
+
+ * fix the client so that it can write into directories with
+ only 'li' permissions.
+
+ * fix installation of 32-bit Shell Extension for 64-bit systems.
+ Install it under its own HKCR keys.
+
+ * modify the wix installer to remove and upgrade install packages
+ with the same version number.
+
+ * when flushing volume location data every two hours or in
+ response to "fs checkvolumes", also flush the mount point
+ links in order to force their re-evaluation.
+
+ * aklog was copying an uninitialized buffer as part of the
+ foreign cell automatic pts registration
+
+ * when obtaining directory listings, check for read permission
+ on the directory. If read permission does not exist, fake the
+ status information for the directory entries. This improves
+ performance, prevents the client from pounding the file server,
+ and prevents leakage of cached status information.
+
+ * "fs getcacheparms" output was incorrect.
+
+ * NetIdMgr AFS Provider should only automatically add token
+ acquisition for cell foo.com if the realm of the cell matches
+ the realm of the identity.
+
+ * Fix a null pointer dereference in cm_MergeStatus()
+
+Since 1.5.18
+
+ * network identity manager provider:
+
+ - Correct for the fact that pr_CreateUser tampers with the
+ contents of the username input buffer.
+
+ - Take into account that the krb4 credential data structure
+ does not have separate realm fields for the user and service.
+ When krb524 is used with a cross-realm ticket, the realm
+ describes the service not the user.
+
+ * Many integrated logon changes:
+
+ - Fix eventlog reporting. Do not attempt to log an event
+ if the event source registration fails. Use DebugEvent0
+ instead of DebugEvent when there are no parameters.
+
+ - Modify the LOOKUPKEYCHAIN macro to recognize ERROR_MORE_DATA
+ errors.
+
+ - Fix the reading of Domain specific configuration for
+ LogonScript and TheseCells. Previously the dwSize value was
+ being overwritten so that subsequent RegQueryValueEx call
+ would fail.
+
+ - Fix a memory leak in the TheseCells reading code.
+
+ - Add support for Domain specific "Realm" specification. The
+ realm is the realm to be appended to the username. When
+ logging in as a domain or to the local machine, the specified
+ "Domain" name is not going to be a valid realm name.
+
+ - Construct a proper principal name based upon the domain
+ specified realm for use in obtaining tokens with KFW.
+
+ - If the domain specified "TheseCells" list includes the
+ default cell, do not obtain tokens twice.
+
+ * An unprotected call to the Kerberos v5 function,
+ krb5_free_context(), can result in an invalid memory access
+ exception if the contents of the krb5 profile, krb5.ini, cannot
+ be parsed correctly. The error is located within the afskfw
+ library which is used by afscreds.exe, afssvrmgr.exe, and
+ afslogon.dll. When the error is triggered within afslogon.dll
+ a blue screen condition can occur when the winlogon.exe system
+ process terminates unexpectedly.
+
+Since 1.5.17
+
+ * Do not stop the afs client service with an assert
+ if the cell name cannot be determined when responding
+ to a "fs whereis" command.
+
+ * Integrated Logon (afslogon.dll). No longer attempt
+ to preserve Kerberos 5 tickets for the logon session
+ as that job is now supported by KFW 3.1 and above.
+
+ * The Network Identity Manager plug-in will attempt to
+ remove expired service tickets from the cache.
+
+Since 1.5.16
+
+ * CellServDB update - GCO Public CellServDB 09 Mar 2007
+
+ * AFS Server Manager and AFS Account Manager data cache
+ moved from HKCU\Software\TransarcCorporation to
+ HKCU\Software\OpenAFS to prevent crashes due to data
+ format changes.
+
+ * Reduce the default UP server probe time from 10 minutes
+ to 5 minutes to match UNIX. This will not solve the NAT
+ port mapping timeout issue because most NATs default to
+ a value less that 5 minutes and this value ensures that
+ the afs client server will start probes 5 minutes after
+ the last probe set ended. The probe period for any one
+ server is therefore longer than 5 minutes. The more
+ servers in the list the longer the time between probes.
+
+ * Before marking a server as down in cm_Analyze, retry the
+ request using a new rx connection to the server. If the
+ cache manager is behind a NAT, it is possible that the
+ response from the server is being sent to the original
+ address:port from which the rx connection was established.
+ This will appear to the cache manager as the server being
+ down when in fact it is not. Forcing the use of a new rx
+ connection will result in the server responding to the
+ most recent address:port assigned to the client by the NAT.
+
+ If the server is in fact down, it will simply take a little
+ longer to notice it.
+
+Since 1.5.15
+
+ * Removing a directory that contained entries was failing with
+ the wrong error code being returned to the CIFS client.
+
+ * rxdebug -long
+
+ * rxdebug exponential back-off. don't take down a server that
+ is already struggling to respond.
+
+ * Network Identity Manager plug-in registers help on the Help
+ menu if it is supported by NIM. (KFW 3.2 and above)
+
+ * Plug-n-play networking did not always work after coming back
+ from a Windows Suspend. The AFS client service failed to
+ re-compute the LAN adapter to bind to and instead attempted
+ to bind to all LAN adapters. This would polute the public
+ network with the name "AFS" which could lead to conflicts
+ between machines.
+
+ * Build installers using Microsoft Hotfixes provided at
+ http://tinyurl.com/243svk for Visual Studio C RunTime Library
+ Daylight Savings Time issues.
+
+ * "fs checkserver" does not require admin privileges unless
+ the probe interval is being changed.
+
+Since 1.5.14
+
+ * A reference leak was discovered in the mountpoint traversal
+ functionality which resulted in cm_volume_t objects not becoming
+ eligible for re-use. This will trigger a panic condition when
+ more than the maximum number of volumes is accessed.
+
+ * Fixed the success test for the "fs memdump" operation. Success
+ is now reported as such. Added cm_volume_t object information
+ to the dump file.
+
+ * A data corruption error has been fixed. Write requests
+ queued for background processing were not retried upon failure.
+ This leads to inconsistencies between the contents of the file
+ in the local cache and the contents of the file on the file
+ server.
+
+ The implemented fix is to re-queue any request that has failed
+ due to timeout, volume busy, volume offline, server busy, or
+ server offline. Requests are not processed while all servers
+ for a volume are inaccessible. When servers become accessible
+ the background request will be retried.
+
+ In addition, if a background write fails, do not mark the buffers
+ as clean. Failure to preserve the dirty flag prevents the buffers
+ from being written to the file server in the future.
+
+ This fix does not address the possibility that the credentials
+ necessary to perform a write request might expire between the
+ time the request is queued and when the request can be processed
+ due to server accessibility.
+
+ * The Freelance volume does not support per user ACLs. The
+ cm_HaveAccessRights function did not handle this special case.
+ Requests for privileges greater than read|lookup would result
+ in afsd_service.exe entering an infinite loop. ISOBuster is
+ known to cause this behavior.
+
+ * When deleting files, the SMB Server would attempt to obtain
+ the access permissions for the parent directory instead of
+ for the file itself. This would result in an incorrect
+ assessment of whether or not the file can be deleted.
+
+ * The Network Identity Manager AFS plug-in has had its string
+ tables updated for consistency with the language used by NIM.
+ All credentials are referred to as credentials instead of tokens.
+ Drop-down combo boxes now in fact drop down.
+
+ * The AFS Salvager was not properly being built on Windows.
+ This is relevant only if the AFS servers are in use.
+
+ * The default signal handlers for the AFS servers incorrectly
+ processed SIGQUIT. Instead of stopping the server, an
+ exception was raised.
+
+ * Fix another volume refcount leak. This one was triggered by
+ an inability to contact the vlservers in order to update the
+ file server list.
+
+ * Fix checklist control used by the drive mappings tabs in
+ afscreds.exe and afs_control.exe.
+
+ * Improve output of "fs memdump" related to buffer management.
+
+ * Fix refcount leak of cm_buf_t objects when prefetching buffers
+ already in the process of being fetched.
+
+ * Improve cache performance by computing the buffer hash table
+ size based upon the number of buffers so that the average
+ number of entries in a bucket is seven.
+
+ * Improve cache performance of read/write data by locally
+ updating the dataVersion of all buffers associated with the
+ file on each StoreData or StoreStatus operation provided that
+ the dataVersion was incremented by one and the dataVersion of
+ the buffer matched the original dataVersion of the cached
+ status information for the file.
+
+ * When recycling cm_scache_t objects, make sure that we
+ clear all of the previous fields. It is no longer the
+ case that we can assume that the stat cache object is being
+ obtained only after a successful FetchStatus call.
+ InlineBulkStatus will allocate stat cache objects for which
+ the no status information is available.
+
+ * When a file is being opened with the OPEN_ALWAYS disposition,
+ do not require write permissions when the file already exists
+ unless of course the file is being opened requesting write
+ access.
+
+ * When a file has been opened for read-only access, if the
+ application requests an exclusive lock, obtain a read-lock
+ instead of a write-lock. The purpose of the exclusive lock
+ in this situation is to prevent changes to the file and the
+ full file read lock will provide this guarrantee.
+
+
+Since 1.5.13
+
+ * Enforce Unix Mode Write bit to prevent file deletion of read only
+ files.
+
+ * The CIFS READ and LIST permissions use the same value 0x0001.
+ When a directory is being accessed, check for PRSFS_LOOKUP
+ instead of PRSFS_READ.
+
+Since 1.5.12
+
+ * Fix computations of short names of mount points. They were
+ broken as part of the directory search optimization. (1.5.13a)
+
+ * When all buffers are in use, periodically sleep the threads
+ waiting for a buffer to become free while the global buffer
+ lock is not being held in order to permit those threads that
+ can free buffers to do so.
+
+ * Power Management improvements. Maintain a global flag that
+ specifies whether or not the service is in a suspend state.
+ Do not panic if Netbios() returns NRC_BRIDGE meaning that the
+ lana is no longer valid. Instead, stop the listener threads
+ and if all listener threads are stopped, reset the lana_list.
+ Allow the cm_Daemon() thread to periodically check the state
+ of the smb listeners. If they are all stopped and the service
+ is not suspended, attempt to restart them. If there are no valid
+ lanas, return to the stopped state.
+
+ * CreateX and NTCreateX use cm_CheckNTOpen() to test whether or not
+ the user is permitted to obtain read or write locks. This function
+ would obtain the lock and then drop it returning whether or not
+ the lock could be obtained. If the lock was in fact required,
+ CreateX/NTCreateX would then obtain it with cm_Lock(). The problem
+ of course being that this pattern results in three RPCs to the
+ file server (lock, unlock, lock). This is reduced to one RPC by
+ implementing cm_CheckNTOpenDone() which frees the allocated byte
+ range lock from cm_CheckNTOpen() after the cm_Lock() call is
+ performed.
+
+ * Optimize the SMB FindFirst processing for the case in which there
+ are no wildcards. If a cm_Lookup succeeds, generate a response
+ from the stat cache entry we have a callback for. Its cheaper
+ than walking each buffer of directory data associated with the
+ directory stat cache entry when we have thousands of directory
+ entries to search.
+
+ * Increase the SMB Ioctl MaxData size to support larger token sizes
+
+ * Disable autorun of the AFS Server Wizard when the AFS Server is
+ installed.
+
+ * Add AFS Server service dependencies on tcpip and PNP_TDI
+
+ * Remove the AFS Server Configuration Tool shortcut
+
+ * Add Freelance mode awareness to AFS Server Configuration Tool
+
+Since 1.5.11
+
+ * Unlike previous versions of the OS, Vista performs a shutdown on
+ the Microsoft Loopback adapter just like it would on a real adapter.
+ This causes the smb_Listener threads to trigger a panic during a
+ suspend/hibernate power event.
+
+ The fix is to unbind from the network adapters in response to a
+ suspend/hibernate power event and then rebind to the adapters
+ when a resume power event is received. Note that the resume events
+ are not reliably delivered so it is possible the afs service will
+ not be accessible. However, this is the best we can do.
+
+ * don't allow environment variables we set in afslogon.dll to be
+ inherited by child processes
+
+ * force an rx connection reset if VICECONNBAD or VICETOKENDEAD are
+ received
+
+ * The old dirty buffer synchronization algorithm had a buf_IncrSyncer
+ thread walking the all buffer list periodically searching for dirty
+ buffers to write to the file server. This had several negative
+ results. The algorithm ate up ever increasing amounts of CPU time
+ even when AFS is idle as the size of the cache increases. Also,
+ buffers were written to the file server in an order based upon the
+ original buffer allocation which has nothing to do with the order
+ in which the buffers became dirty.
+
+ The new algorithm maintains a dirty buffer list. Items are added
+ when the buffer is originally marked dirty. A buffer is only
+ removed from the list by the buf_IncrSyncer when the buffer is no
+ longer dirty. If the list is empty the thread goes back to sleep
+ immediately without additional processing requirements.
+
+Since 1.5.10:
+
+ * Enable renaming of directories from the Explorer Shell when
+ Offline Folders is enabled
+
+ * An error is reported in response to the SMB ReceiveCoreFlush
+ request when an error has not occurred.
+
+Since 1.5.9:
+
+ * optimize dirty buffer flushes in response to suspend operations
+ do not flush if only loopback adapter is installed
+ do no retry dirty buffer writes
+
+ * do not reset netbios when performing loopback checks. doing
+ so will break the existing lana bind
+
+ * remove a deadlock in smb3.c QPathInfo
+
+Since 1.5.8:
+
+ * Add NetIDMgr AFS Plug-in
+
+ * "Show Tray Icon" checkbox removed from afs_config.exe
+
+ * Disable DNS Registrations for the Loopback Adapter and make sure
+ that Netbios is turned on.
+
+ * A reference count leak on stat cache objects was fixed
+
+ * For debugging, tread ids of writers are now tracked on locks
+
+ * Corrected an incorrect lock that was being held but not
+ freed in a rare error case
+
+ * Changed trace log end of line to CR-LF so it can be read
+ with notepad.exe
+
+ * modify the buffer synchronization thread to write all dirty
+ buffers and sleep only when there is no work to be done
+
+ * improve behavior of cache manager when large numbers of
+ temporary files are being created by multiple clients within
+ the same directory.
+
+ * do not permit dirty buffers that belong to deleted files
+ to be written to the file server. its a waste of bandwidth
+
+ * do not leak stat cache references when the file server
+ returns VNOVNODE
+
+ * afscreds: do not permit an attempt to obtain tokens if the
+ afs service could not be started. this was causing stack
+ overflows on Vista after resuming from a suspend
+
+Since 1.5.7:
+
+ * better handling of dot directory
+
+ * fs sq and fs mkm now behave as on UNIX
+
+ * add license to installers
+
+ * Return Invalid Parameter error for unknown InfoLevels in
+ SMB Tran2 Search Directory.
+
+ * Correctly use WSAStartup and WSACleanup within the RX library
+
+ * Check that afsd_service.exe is running before performing
+ a pioctl call.
+
+ * Force AFS Shell Extension to load resource DLL using
+ afs_shl_ext.dll as a base name.
+
+ * (Wix) install afs_shl_ext_XXXX.dll and afs_creds_XXXX.dll in
+ OpenAFS\Client\Program
+
+ * Fix SMB_SET_FILE_END_OF_FILE_LENGTH
+
+ * Do not panic if the maximum number of volume entries are in use
+ and one of them can be recycled.
+
+Since 1.5.6:
+
+ * Fix the code that reads the backconnnectionhostnames value
+ so that there is not an uninitialized variable
+
+Since 1.5.4/1.5.5:
+
+ * integrated logon could cause winlogin.exe to blue screen windows
+ if it was called with a domain that does not exist on the machine.
+ this is possible during a sysprep.
+
+ * corrections to cm_buf_t handling to ensure that buffers are
+ removed from queues before they are freed and that holds are
+ obtained on the next buffer in a chain before releasing the
+ current one.
+
+ * do not generate MessageBox dialogs on network errors. they
+ cause more trouble then they are worth.
+
+ * move GlobalAutoMapper into a separate thread so that it does
+ not prevent service startup if the WNetAddConnection2 call
+ does not return.
+
+ * restrict hard dead and connection timeouts to the CIFS Session
+ Timeout value. This is being done to try to prevent virtual
+ circuits from being destroyed prematurely.
+
+ * Fix the code that writes the backconnectionhostnames value
+ to ensure that the data buffer is written with the correct
+ length.
+
+ (there were no windows specific changes between 1.5.4 and 1.5.5)
+
+Since 1.5.3:
+
+ * Corrections to the Integrated Logon functionality that permits
+ Kerberos 5 TGTs to be communicated into the user session. The
+ transfer is now more secure and succeeds when the user does not
+ have read permission to the %SystemRoot%\TEMP directory.
+
+ * NSIS installer updated to version 2.18
+
+ * WiX installer updated to version 2.0.4221.0
+
+ * Updates to the IFS functionality for 64-bit correctness and
+ permit compilation. The IFS functionality works for pioctl()
+ operations but not much else at this point.
+
+ * A major re-write of the OpenAFS implementation of the CIFS Tran2
+ query and set functions.
+
+ * Ignore the Windows CIFS client session timeout entirely. Timeout
+ only after the AFS Hard Dead Timeout period expires.
+
+Since 1.5.2:
+
+ * move headers, libraries, and samples from OpenAFS\Client to
+ OpenAFS\SDK
+
+ * remove the auto-registration of AFS IDs for foreign cells
+ from integrated logon. this permits afslogon.dll to avoid
+ initializing the RX library. afslogon.dll is a network
+ provider library and as such it is loaded into all applications
+ which perform a CreateProcessAsUser call. Initializing the
+ RX library spawns background threads to listen for inbound
+ packets. When the network provider is unloaded from the
+ process, the RX library does not cleanup the threads. If they
+ continue to execute after the library is unloaded, the process
+ will crash.
+
+ * implement inline bulk status calls. this will significantly
+ improve the performance of directory listings.
+
+ * prevent a crash when evaluating mountpoints to volumes that do not
+ exist
+
+ * new command: fs uuid [-generate]
+ displays the current uuid and allows a new one to be generated
+ on the fly without restarting the afs client service.
+
+ * fix the 64-bit installers to properly document the install
+ location
+
+ * move help files to the proper location so they can be located by
+ the system tray tool and the control panel.
+
+ * "over quota" and "disk full" errors were not being reported to the
+ caller.
+
+ * largefile support has been added. Files greater than 31-bits can no
+ longer be written to file servers which do not support large files.
+ When file servers support large files, files up to 64-bits can be
+ read or written.
+
+ * cm_SyncOp could return with the input buffer unlocked upon error
+ which would result in a panic condition. This bug was introduced
+ in 1.4.1.
+
+ * vlserver failover when freelance mode did not work. This prevented
+ the root.afs volume from being loaded if the first vlserver could
+ not be reached.
+
+Since 1.5.1:
+
+ * A bug in the CIFS Standard Info response packet caused directories
+ to appear as standard files. This prevented Microsoft Vista from
+ being able to walk the AFS directory tree.
+
+ * Mount points must be reported as directories in response to
+ Query Path Info operations.
+
+ * A deadlock was detected when performing "fs flushall" if the
+ file server reports VNOVNODE. The scp->createBufferLock is
+ already held by the current thread and there is no mechanism
+ to propagate the knowledge. Therefore, an alternate mechanism
+ for clearing the cache must be developed. A new function
+ cm_RecycleSCache(scp,flags) has been extracted from
+ cm_GetNewSCache(). This function performs the task of recycling
+ an cm_scache_t object. When called from cm_GetNewSCache() with
+ no flags the expectation is that there are no associated buffers
+ that are queued to be read or written. When called from
+ cm_Analyze() with the CM_SCACHE_RECYCLEFLAG_DESTROY_BUFFERS
+ flag, any queued buffers will be de-queued and marked as if
+ the operations were performed so the data can be discarded.
+
+ * CM_ERROR codes were logged as "unknown" by cm_Analyze.
+
+ * In response to VNOVNODE, the parent is only discarded if the current
+ cm_scache_t is not a directory.
+
+ * In the Ioctl FlushFile and FlushVolume functions, there were no
+ checks to protect against flushing the Freelance SCache entries.
+
+ * In FlushFile, the wrong cm_scache_t object was being released.
+
+ * In cm_GetNewSCache, do not allow Freelance SCache entries to be
+ recycled. Choose a new entry if cm_RecycleSCache fails.
+
+ * Speed up the performance of the cache manager by not
+ holding the smb_fid_t mutex across calls to cm_SyncOp
+ and AFS RPCs.
+
+ * Ensure that all smb_fid_t flag references are protected.
+
+ * Remove a deadlock between smb_fid_t mutex and
+ smb_rctLock introduced in 1.4.1.
+
+ * Fix aklog AFSID lookup to use not send the realm
+ name when the realm is the local realm for the
+ cell. The PT Server doesn't strip the realm
+ name when it is the local realm.
+
+ * Treat "\\afs\*." as an alias for "\\afs\all"
+
+ * Dynamically adjust the priority of server threads
+ based upon the age of the CIFS request that is
+ being processed. The priority is bumped one level
+ for every 15 seconds of processing time.
+
+ * The original openafs contribution mis-used the
+ cm_GetCallback function. This function should only
+ be called as a side effect of a call to
+ cm_SyncOp(CM_SCACHESYNC_NEEDCALLBACK). The way it
+ was being called results in a FetchStatus RPC being
+ performed even when the client already has a valid
+ callback and does so in a manner that destroys the
+ synchronization of the threads that are calling
+ cm_SyncOp. If nothing else this results in a
+ significant performance penalty.
+
+ * More changes to cleanup of smb_vc_t objects in
+ order to prevent race conditions.
+
+ * Reduce the amount of Power Management event logging
+ to afsd_init.log
+
+ * If the client detects that the IP address has
+ changed, force the use of new RX connections. This
+ enables the file server to recognize that the client
+ has moved.
+
+ * Remove a race condition and deadlock associated
+ with cleanup of smb_vc_t objects.
+
+ * Fix the ANSI filename support. One function that
+ required it was missing the translations.
+
+Changes not present in 1.4.1 and since 1.5.0: 1.5.1 released
+(24 April 2006)
+
+ * Add a DllMain() function to afspthread.dll. Perform
+ cleanup of thread local storage, rx queues, critical
+ sections, event handles, etc. This was implemented
+ to avoid crashes in afspthread.dll when applications
+ which load/unload the dll attempt to terminate.
+
+ * Lock request behavior has been altered. As of this
+ release a locally allocated lock will be used whenever
+ the volume is RO or the requesting user's permissions
+ are 'rl'. This will allow end users to execute programs
+ from RW volumes when they do not have the 'k' privilege.
+
+ Note that a recent discovery indicates that the 'k' bit
+ is only supposed to control the ability to obtain read
+ locks. Write locks are to be controlled by the 'w' and
+ 'i' privilege bits.
+
+ * Code has been added to enable the cache manager to be
+ able to obtain the AFSID of the authenticated user.
+ This is required to be able to determine when "Insert"
+ privileges should apply. AFS considers a file to be
+ a new file whenever the owner's AFSID matches the
+ AFSID of the user. The current implementation relies
+ on the name specified during the SetToken call to be
+ correct. This will be replaced in the future with a
+ new RPC that allows the AFSID of the authenticated
+ user to be obtained.
+
+ * A 32-bit-tools installer for use on 64-bit systems
+ is now available. These tools are for use with 32-bit
+ versions of Kerberos for Windows or JPSoftware's 4NT.
+
+Since 1.4.1 rc10: 1.4.1 final released (9 April 2006)
+
+ * Remove the use of the "active_vcp" variable. This variable
+ no longer serves any useful purpose and was the cause of
+ race conditions that produced under counts of the smb_vc_t
+ references.
+
+ * Change default minidump output to include data segments
+
+ * restore access to cm_IoctlGetVolumeStatus and
+ cm_IoctlSetVolumeStatus calls for AFS pioctl operations.
+ Still need to figure out why they are being called
+ for SMB/CIFS IOCTL operations instead of Trans2GetFileInfo.
+
+Changes not present in 1.4.1: 1.5.0 released (16 Feb 2006)
+
+ * Update build system to include the "sys_name" in the
+ obj and dest paths.
+
+ * optimize the number of calls to obtain the smb_user_t for a
+ smb virtual circuit.
+
+ * add logging of server addresses, status and capabilities when
+ pinging the server.
+
+ * prevent multiple threads from pinging the same server simultaneously.
+ instead, threads block and then use the result of the ping that was
+ already taking place.
+
+ * Add registry values to allow the defaults for daemon checks to be altered
+ at startup. Log values to afsd_init.log.
+
+ daemonCheckDownInterval
+ daemonCheckUpInterval
+ daemonCheckVolInterval
+ daemonCheckCBInterval
+ daemonCheckLockInterval
+ daemonCheckTokenInterval
+
+ * Add EventLog messages for transitions in fs crypt state.
+
+ * Byte range locking (when locks will be obtained from the
+ is still under discussion)
+
+ * 64-bit Windows operating systems now supported
+ (XP SP2 64-bit, 2003 SP1 64-bit, 2003 R2 64-bit)
+ This is a native 64-bit implementation of OpenAFS for Windows.
+ There is currently no 64-bit version of KFW and therefore
+ there is no (easy) method for obtaining AFS credentials.
+ 32-bit KFW 3.0 can be used with 32-bit OAFW libraries
+ to obtain AFS tokens but there is not for the feint of
+ heart.
+
+ * A faster implementation of the fcrypt algorithms improves
+ performance.
+
+ * The afsd_service.exe now supplies Event Log Message Text.
+ The event log no longer generates warning text due to lack
+ of message configuration.
+
+ * When afs servers are unreachable and network stack returns
+ a WSAEHOSTUNREACHABLE error, the AFS client will immediately
+ mark the attempted server as being down. This allows for
+ very fast response to the calling application. This change
+ has a pronounced improvement when the Windows Explorer is
+ used on disconnected mobile computers.
+
+ * Added DebugOutputString debugging of the RX library
+
+Since 1.4.1 rc9: 1.4.1 rc10 released (10 March 2006)
+
+ * Fix the rx-lwp implementation to randomly generate rx call
+ identifiers which are supposed to be unique at a given point
+ in time. This affects some of the command line tools used
+ for debugging but not the AFS Client Service itself which
+ uses the rx-pthreads implementation.
+
+ * xstats_fs_test.exe and xstats_cm_test.exe are now built for
+ Windows although they are not distributed
+
+ * don't generate an exception when logging unexpected SMB packets
+
+ * the data structures used by cm_IoctlGetVolumeStatus and
+ cm_IoctlSetVolumeStatus are not compatible with the CIFS
+ Get/Set File Information calls so don't bother executing them.
+
+Since 1.4.1 rc8:
+
+ * Fix data written to registry as part of BackConnectionHostnames
+ data value
+
+ * Fix initialization bug when allocating cm_server_t objects that
+ would cause servers to appear to be down after each allocation
+ or renewal. Server would appear up after the next check servers
+ cycle.
+
+Since 1.4.1 rc7:
+
+ * Windows will return WSAECONNRESET to the next receive packet
+ operation on a socket if an ICMP packet is received in response
+ to a packet that was sent and could not be delivered because
+ the port was unreachable. We have to treat this as
+ WSAEWOULDBLOCK so that we can retry the select() check and
+ not mark the connection as bad.
+
+Since 1.4.1 rc6: 1.4.1 rc7 released (14 Feb 2006)
+
+ * The client manager maintains a least recently used list of
+ all the ACLs. If an ACL is already the most recently used
+ do not bother to remove it from the list and place it on the
+ front.
+
+ * As part of the process of adding a new server, set the
+ server is down flag and then perform a ping. If the server
+ is up, the flag will be reset. If the server is down, the
+ client will not timeout unnecessarily while attempting to
+ perform real work.
+
+ * If a Mountpoint String is the empty string, return PATH NOT
+ FOUND.
+
+ * Modify behavior of the Network Provider to avoid querying the
+ profile location if integrated logon is known to be disabled.
+
+ * Correct behavior of 'LogoffPreserveTokens'. When set, tokens
+ will always be preserved regardless of whether or not integrated
+ logon was used to obtain tokens. When unset, tokens will be
+ destroyed regardless of whether integrated logon was used to
+ obtain the tokens unless the profile is stored in AFS.
+
+ * Disable LogoffTransferToken functionality. The SMB V3 Logoff
+ message is being delivered even when the user is not logging
+ off of the computer.
+
+ * Fix a deadlock condition introduced in rc6.
+
+ * Cell names are case-insensitive. Since the founding of OpenAFS
+ there has been a bug that treated "cell", "Cell", and "CELL" as
+ different cells. This would result in what appeared to be
+ random disappearance of user tokens or a failure to authenticate
+ even when tokens were listed by the "tokens" command.
+
+Since 1.4.1 rc5: 1.4.1 rc6 released (2 Feb 2006)
+
+ * Additional auditing of the smb code revealed that smb ioctl
+ operations were failing to free smb_fid_t objects
+
+ * The File Identifiers assigned to smb_fid_t objects could be
+ given the value 65535 which is 0xFFFF which is also the
+ INVALID_HANDLE value. Both 0 and 65535 are now treated as
+ reserved values.
+
+ * Audited all assignments to fields and ensured that they are
+ protected by obtaining the relevant mutex object.
+
+ * Re-wrote the VNOVNODE handling to avoid a potential deadlock
+ if both the current cm_scache_t object and its parent are
+ both returning VNOVNODE.
+
+ * Removed all the logic associated with the 'dead_vcp' variable
+ which must have been added for debugging because its used
+ was never thread safe and it truly served no purpose.
+
+Since 1.4.1 rc4: 1.4.1 rc5 released (25 Jan 2006)
+
+ * Re-enabled LogoffTokenTransfer and LogoffTokenTransferTimeout
+ registry settings. Default is ON and 120 seconds. If set to
+ OFF, tokens will not be destroyed.
+
+ * Fixed a number of race conditions and reference count problems
+ associated with global queues.
+
+ * Added a method to detect abandoned smb virtual circuits so their
+ associated file handles, locks, user tokens, and smb session
+ resources can be released.
+
+ * Added a mechanism to allow user tokens to be preserved
+ during integrated login and be freed after logoff.
+
+ * Check access permissions to the file before the file is
+ truncated.
+
+ * More improvements to the handling of SMB Virtual Circuits
+ when SMB sessions are closed.
+
+ * Correct a race condition introduced in rc4 that could result
+ in a crash of afsd_service.exe.
+
+Since 1.4.1 rc3: 1.4.1 rc4 released (11 Jan 2006)
+
+ * Properly handle pre-mature SMB session closures.
+ File handles, tree connections, and user sessions are now
+ freed when the virtual circuit is closed.
+
+ * smb_username_t and smb_user_t objects are now properly reference
+ counted and freed as appropriate.
+
+ * disable to use of AFS file locks. byte range locking is still
+ implemented but all locks are managed locally. This prevents
+ multiple processes from editing the same file on the same
+ machine but it does prevent multiple processes on separate
+ machines from modifying the file.
+
+Since 1.4.1 rc2: 1.4.1 RC3 released (4 Jan 2006)
+
+ * A fix to "fs setserverprefs -vlserver". Multiple calls with
+ the same server parameter would result in a panic condition
+ if the server had not already been contacted by the AFS
+ client service.
+
+ * Better warnings are written to the afsd.log file when
+ the Windows RPC Protocols are not properly configured as
+ is often the case on Windows 2000.
+
+ * fix the procmgmt library to restore C RTL signal handlers when
+ it is being detached from the process prior to process termination.
+
+Since 1.4.1 rc1: 1.4.1 RC2 released (30 Nov 2005)
+
+ * close a lock leak in the rx library that could be triggered while
+ processing aborts
+
+ * prevent removal of drive mappings in response to afscreds.exe -M
+
+ * add logic to process VNOVNODE in cm_Analyze. Force re-evaluation of symlink
+ strings and flush the stat cache entry.
+
+ * prevent server objects from being freed if user preferences are set.
+
+ * Update WIX support to 2.0.2419.0
+
+ * Release all locks on the server at service shutdown.
+
+ * A down server should be marked up as long as it responds to the client.
+ It doesn't matter if the server returned an error as long as the error
+ is something other than VRESTARTING. If there is such an error, all
+ connections on that server should be marked for replacement.
+
+ * Change the check "up" servers period from once per hour to once every
+ ten minutes. This matches the behavior of the Unix cache manager.
+
+Post 1.4.0 revisions: 1.4.1 RC1 released (21 Oct 2005)
+ * Byte Range Locking support has been added. Architectural documentation
+ is located within src/WINNT/afsd/cm_vnodeops.c. Best efforts are
+ made to enforce Windows mandatory locking model using locally managed
+ byte range locks with full file locks obtained from the file server.
+ Read-only volumes provide the user with an implied locking privilege.
+ Read-write volumes require that a user be granted the locking privilege
+ in order for a lock to be obtained. As most Windows applications use
+ Shared file access modes, they require the ability to obtain locks in
+ order to access files.
+
+ * Implement error translation functions to convert Universal Error Codes
+ output by modern servers to local errno and winsock error values.
+ This fixes the error message problems using pioctl() calls from fs.exe
+ and the AFS Shell Extension.
+
+Since 1.4.0 rc8: 1.4.0 final tagged (20 Oct 2005); released (31 Oct 2005)
+ * Allow the AFS Client Service to set the firewall configuration by
+ retrying until after Windows determines the boot period is over.
+
+ * Do not attempt to configure the firewall on Windows 2000, XP pre-SP2,
+ or 2003 pre-SP1
+
+ * Detect IP address changes from within the AFS Client Service for the
+ purpose of checking down servers sooner
+
+ * If the file server or vldb server report RXKADUNKNOWNKEY, return
+ SEC_E_NO_KERB_KEY to Windows. This provides an indication to the
+ user that there is a Kerberos key problem. Previously the user would
+ receive no feedback when there was something wrong.
+
+ * Fix the large integer library support to properly handle values greater
+ than 32-bits
+
+Since 1.4.0 rc7: 1.4.0 rc8 released (15 Oct 2005)
+ * Updated CellServDB
+
+ * Fixed file name pattern matching. Question marks can match nothing
+ if found at the end of a component.
+
+Since 1.4.0 rc6: 1.4.0 rc7 released (8 Oct 2005)
+ * Kerberos 5 ticket lifetimes should adhere to KFW Leash lifetimes
+
+ * The MSI installer now has a new Product ID for each build. This
+ is to allow for automated upgrades. The Upgrade ID is remaining
+ constant.
+
+ * Volumes that were cached and then subsequently were salvaged,
+ moved or otherwise taken temporarily offline (as opposed to being
+ busy) would become unreachable. A distinction is now made between
+ a volume being offline and a server being down.
+
+Since 1.4.0 rc5: 1.4.0 rc6 released (2 Oct 2005)
+
+ * Fixed several AFS Shell Extension issues:
+ - Checking Server Status would only work if a specific cell was
+ specified.
+ - If servers were down, the Server Down dialog would write to
+ invalid memory and cause explorer.exe to crash
+ - Default Push Buttons were not specified for many dialogs
+ - The extension would be unloaded by the Explorer Shell and
+ never be reloaded under some circumstances.
+
+ * Fixed the AFS System Tray menu to disappear if another Window
+ was selected before a menu item was selected
+
+ * Added volume owner and group information to "fs examine" output
+
+ * Added fs and registry support for enabling/disabling/clearing
+ rx statistics gathering.
+
+Since 1.4.0 rc4: 1.4.0 rc5 released (25 Sep 2005)
+
+ * New Product Code GUIDs issues for 1.4 and 1.5 branches. Separate
+ GUIDs for each platform.
+
+ * Documentation directory structure and default installation rules
+ for MSI
+
+ * New OpenAFS for Windows HTML Release Notes installed
+ as part of the documentation set.
+
+ * Add thread id to rx debugging messages
+
+ * When all servers are offline, return a bad network path error
+ immediately. This is necessary to allow Explorer to do the
+ right thing and not hang. The background daemon thread will
+ check the down servers every 30 seconds to see if they are
+ back up.
+
+Since 1.4.0 rc3: 1.4.0 rc4 released (14 Sep 2005)
+
+ * The AFSCache file has been modified to store both the
+ serial number of the volume on which the file resides
+ and the SID of the local machine. If either change,
+ a new UUID is generated.
+
+ * add "fs flushall" command that forces all data buffers
+ to be flushed.
+
+Since 1.4.0 rc2: 1.4.0 rc3 released (4 Sep 2005)
+
+ * add support for '/' instead of '\' in pioctl() calls
+
+ * Apply AFS Client Admins group protect to AFS Shell Extension
+
+ * Add support for \\afs\<name> to most AFS Shell Extension
+ commands except the symlink methods.
+
+ * when installing the Microsoft Loopback Adapter, enable
+ MS Client for Networks and prevent an install failure
+ by not calling CoInitialize twice in the same thread.
+
+ * reload cell vldb values from the CellServDB every two
+ hours in case it changes
+
+ * When updating cell information from DNS, be sure to set
+ a new timeout.
+
+ * Add support to allow use of \\AFS\<foo> where <foo> is
+ either a mount point or symlink. As <foo> is normally
+ treated as a share name, we transform it into \\AFS\all\<foo>
+ for processing.
+
+ * Init 'code' to prevent false errors when integrated logon
+ is disabled and the service is not running
+
+Since 1.4.0 rc1: 1.4.0 rc2 released (28 Aug 2005)
+
+ * Removed trace log messages that were hampering performance.
+
+ * Fixed a deadlock that was being triggered by editing Word
+ documents stored within AFS with WinWord 2003.
+
+ * Bit 3 of the TraceOption registry value is now used to set the
+ default for "fs trace" in the non-Debug builds. The new default
+ is off for release builds and on for debug builds.
+
+ * Bit 2 of the TraceOption registry value can be used to turn on
+ real-time output of debug log entries to the Windows Debug
+ Output monitor interface. This data can be viewed with tools
+ such as Sysinternal's DbgView.
+
+Since 1.3.87: 1.4.0 rc1 released (17 Aug 2005)
+ * When the cache manager reports ALLBUSY or ALLOFFLINE for
+ a resource we should not be returning status codes such
+ as Network Busy or Remote Host Down because these errors
+ will imply that the AFS Client Service is Busy or Down
+ and that is simply not the case. Instead we will return
+ Bad Network Path as the path is temporarily not available.
+
+ Instead of returning Sharing Paused when there is a
+ timeout error, return Timeout. Once again, the AFS Client
+ Service is not paused.
+
+ * afscreds.exe would display an Obtain Creds dialog when
+ the expired credentials reminder was triggered even
+ if there was no network path to the KDC. This is prevented
+ by adding KDC probe logic to the reminder thread.
+
+ * afscreds.exe would display expired tokens no differently
+ than unexpired ones. This would make it difficult for the
+ user to distiguish when the tokens were expired. For the
+ English build added a new resource string "(expired) that
+ is displayed instead of the expiration time.
+
+Since 1.3.86:
+ * "fs wscell" when executed in freelance mode will return the
+ name of the cell configured in the registry. The root.afs
+ volume is not loaded from this cell, but it is used for the
+ default for aklog and integrated login.
+
+ * "fs mkmount, fs rmmount, symlink make, symlink remove" will
+ no longer work on \\AFS\all when freelance is being used
+ unless the user is a member of the "AFS Client Admins" Windows
+ Security group.
+
+ * some more checks performed during persistent cache validation.
+
+Since 1.3.85:
+ * Optimize calls to cm_CheckServer from cm_Analyze. Only check
+ down servers for the current cell not all cells.
+
+ * If the scache LRU list becomes corrupted, the AFS Client Service
+ might enter an infinite loop at startup. Detect the corruption
+ and discard the cache contents in this case.
+
+ * Fixed the Explorer Shell's remove mountpoint functionality.
+
+ * Fixed a deadlock caused by the holder of cm_aclLock attempting to
+ obtain a mutex lock on a cm_scache_t object whose lock is held by
+ a thread attempting to obtain the cm_aclLock.
+
Since 1.3.84:
- * Eric William's IFS redirector has been checked into the source
- tree. This code is experimental at the current time and is not
- being incorporated into binary releases. Instructions for building
- from sources are found in the top-level README-NT file.
+ * Really fixed DNS AFSDB queries to ensure that "csail" cannot be
+ misinterpretted as "csail.mit.edu" when the resolver
+ is configured to append ".mit.edu" to failed DNS queries.
+
+ * Added a new registry key, "LogoffPreserveTokens" (see registry.txt),
+ that can be used to force the preservation of user tokens upon logout.
+
+ * Update the NSIS install scripts to use NSIS 2.07. This release adds
+ recommended installation categories: AFS Client, AFS Administrator,
+ AFS Server, AFS Development Kit. Each category includes a different
+ default subset of the OpenAFS components.
+
+ The OpenAFS logo is now associated with the NSIS uninstall entry
+ in the Add/Remove Programs control panel.
+
+ * The user name associated with AFS tokens when obtained with
+ integrated login, the afs systray tool, or aklog will always
+ include the full Kerberos 5 user principal name regardless of
+ whether or not the cell is local to the realm.
* Modify integrated login so that it does not enter an infinite
loop if the service is not set to auto start.
* Added uninstall.exe to Wix installation
+ * More modifications to algorithms used to wake sleeping threads.
+
Since 1.3.83:
* Changes to the algorithms used to wake threads when they are