mirror of
https://git.openafs.org/openafs.git
synced 2025-01-19 07:20:11 +00:00
e6c04df407
Change-Id: I27ece967a136a44513fade8e9b8cc1c8d57951b4 Reviewed-on: http://gerrit.openafs.org/5449 Reviewed-by: Jeffrey Altman <jaltman@openafs.org> Tested-by: Jeffrey Altman <jaltman@openafs.org>
5703 lines
230 KiB
Plaintext
5703 lines
230 KiB
Plaintext
Since 1.6.0002 (1.6.0b)
|
||
|
||
* Correct an error in mount point string construction
|
||
when the user provides a cell alias to "fs mkmount"
|
||
instead of the full cell name. Every mount point
|
||
string must end in a trailing dot.
|
||
|
||
* Major improvements to the Explorer Shell Extension.
|
||
|
||
* Addition of the AFS Redirector drivers and service
|
||
interface.
|
||
|
||
Since 1.6.0001 (1.6.0a)
|
||
|
||
* Correct an error in CheckOfflineVolumeState processing
|
||
|
||
* Permit NPLogonNotify() to exit immediately if the
|
||
SetToken error is KTC_NOCM.
|
||
|
||
Since 1.6.0000 (1.6.0)
|
||
|
||
* Avoid a cm_serverLock reference count leak.
|
||
|
||
Since 1.5.9907 (1.6pre7)
|
||
|
||
* Add Shutdown message to the windows event log
|
||
|
||
* Check Offline Volume status according to the specified policy
|
||
not every time the daemon thread runs.
|
||
|
||
* if the directory object cannot be found in the tree, return
|
||
CM_ERROR_PATHNOTFOUND instead of crashing.
|
||
|
||
* avoid memoryt leak of cm_GetSpace() allocations
|
||
|
||
* improve afs/kfw error message output. Include PT and KTC
|
||
errors. Impacts afslogon.dll, afscreds.exe and afssrvadm.exe
|
||
|
||
* afslogon.dll NPNotifyLogon will now kick start the
|
||
afsd_service if it is not already in a pending start or
|
||
started state.
|
||
|
||
* properly construct the userrealm in the afskfw library.
|
||
do not include the '@' in the realm.
|
||
|
||
* fix the generation of HTML reference manual pages from
|
||
POD.
|
||
|
||
* No longer send release lock RPCs to a file server for
|
||
a deleted file. Each attempt will fail with a VNOVNODE
|
||
abort. Multiple aborts can result in the file server
|
||
throttling the client.
|
||
|
||
* cm_BkgDaemon should not perform the job of cm_SyncOp
|
||
which already properly serializes operations on the
|
||
a file.
|
||
|
||
* cm_BkgDaemon should not perform queued tasks on deleted
|
||
objects. Doing so is a waste of resources.
|
||
|
||
* Avoid rx nat pings prior to connection attachment.
|
||
|
||
* After directory enumeration completes move the directory
|
||
status object to the most recently used position to avoid
|
||
it being recycled when the directory contains more objects
|
||
that the status cache can hold.
|
||
|
||
* Reduce memory fragmentation caused by lock order validation
|
||
checks.
|
||
|
||
* When a status object is deleted, move its object to the
|
||
least recently used position in the queue to promote
|
||
recycling when the reference count drops to zero.
|
||
|
||
* Fix the osi_Log macros so they safe for use in if..else
|
||
statements by wrapping in do..while(0). Several logged
|
||
messages were wrong as a result and there may have been
|
||
other logic errors caused by mismatched if and else
|
||
statements when braces were not used in the code.
|
||
|
||
* Apply interlocked operations to all state and queue fields
|
||
in the cm_call, cm_volume, cm_scache, and cm_buf objects
|
||
in order to ensure that operations are atomic. State flag
|
||
bits were being lost on multi-processor systems under heavy
|
||
load.
|
||
|
||
Since 1.5.9906 (1.6pre6)
|
||
* add support for detection of NTFS symlinks to
|
||
\\AFS using GetFileInformationByHandleEx which is
|
||
available on Vista, Server 2008 and beyond.
|
||
|
||
* improve thread safety of afs_shl_ext.dll
|
||
|
||
* MS11-043 adds response validation for SMB_COM_NEGOTIATE
|
||
messages received by the SMB Redirector. OpenAFS failed
|
||
to properly specify a Challenge and DomainName in the
|
||
response when the security mode is SMB_AUTH_NONE (or share
|
||
with password). This patchset corrects smb_ReceiveNegotiate()
|
||
so that it adheres to the protocol specification.
|
||
|
||
* smb_T2SearchDirSingle() must not fail directory search requests
|
||
for the _._AFS_IOCTL_._ file. Although this file does not actually
|
||
exist, it is successfully processed by CreateFile operations.
|
||
Therefore, an explicit search for it should return a valid answer.
|
||
|
||
* cm_SyncOp/cm_SyncOpDone is used to synchronize the RPC processing
|
||
to ensure that calls which are in conflict cannot occur at the
|
||
same time but also to ensure that the ordering of operations
|
||
is consistent. cm_MergeStatus() was in many cases executed after
|
||
cm_SyncOpDone() removed the synchronization barrier which in turn
|
||
permitted status information to be applied out of order. Side
|
||
effects could have included data loss due to client side file
|
||
truncation. More commonly two StoreData RPCs would have their
|
||
status information applied out of order forcing the cache manager
|
||
to invalidate all of the cached data for the file.
|
||
|
||
* cm_NewServer() can result in a call to cm_UpdateVolumeLocation()
|
||
if a server probe is performed. In order to avoid recursive
|
||
calls to cm_UpdateVolumeLocation() do not probe new servers from
|
||
within cm_UpdateVolumeLocation().
|
||
|
||
* Numerous Rx improvements.
|
||
|
||
* Fix out of order lock acquisition in smb_ReceiveV3LockingX()
|
||
which occurs if the lock acquisition fails.
|
||
|
||
Since 1.5.9905 (1.6pre5)
|
||
* aklog supports dotted Kerberos v5 principal names.
|
||
|
||
* afskfw library always attempts afs/cell@USER-REALM
|
||
|
||
* afskfw library must test return code from
|
||
krb5_cc_start_seq_get() or will trigger a null
|
||
pointer exception when using Heimdal.
|
||
|
||
* lock protected fields must be 32-bit in order
|
||
to avoid memory overwrite races.
|
||
|
||
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.<2E> (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.<2E>
|
||
_afs3-vlserver._udp.<cellname>. Priority field is used.<2E>
|
||
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:
|
||
* 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 asetkey.exe used to set a Kerberos 5 key for use by the
|
||
AFS server daemons
|
||
|
||
* 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
|
||
put to sleep because of conflicts over buffer operations.
|
||
|
||
Since 1.3.82:
|
||
* The OpenAFS integrated logon obtains Kerberos 5 tickets as part of
|
||
the process of producing AFS tokens. The tokens are stored within
|
||
the AFS Client Service but the Kerberos 5 tickets have been discarded.
|
||
New functionality has been added to temporarily copy the tickets to
|
||
a file ccache during the short window between the NPLogonNotify and
|
||
WinLogon Logon Event. The Logon Event handler starts a process as
|
||
user, afscpcc.exe, that copies the tickets into the default ccache.
|
||
The file ccache is then destroyed by the event handler.
|
||
|
||
* During synchronization operations on stat cache entries, if threads
|
||
are forced to sleep it was possible that the threads would not be
|
||
woken under heavy load.
|
||
|
||
* Enforce the delete on close flag specified by the NTCreateX()
|
||
operation.
|
||
|
||
* A race condition in the rx library was fixed that resulted in
|
||
a deadlock in rx_NewCall when the RX_CONN_MAKECALL_WAITING flag
|
||
was cleared when threads were still waiting to use the
|
||
connection. Also, fixed a potential case in which the
|
||
connection could be destroyed while threads were waiting to use it.
|
||
|
||
* The DNLC freelist has been seen to become corrupted with still
|
||
active entries being stored on the freelist. Changes were made
|
||
to perform a better job of cleaning entries before placing them
|
||
onto the freelist; marking them with the correct magic value when
|
||
purging the list; and allowing the list to be purged on startup
|
||
if the cache validation fails.
|
||
|
||
* Windows Crash Reporting does not get triggered for afsd_service.exe
|
||
because it provides its own top level exception handler. This patch
|
||
places an explicit call to ReportCrash() on platforms which support
|
||
it. (XP and above.)
|
||
|
||
If you configure Crash Reporting via AD Policy to capture crash
|
||
reports within the domain, then you will receive this output.
|
||
|
||
* Generate MiniDumps independent of the Windows Crash Reporting.
|
||
|
||
(a) If an exception occurs,a minidump will be generated at the path
|
||
%TEMP%\afsd.dmp. The type of minidump defaults to Normal but
|
||
can be set to any other type via use of the
|
||
registry.
|
||
|
||
[HKLM\SOFTWARE\OpenAFS\Client] MiniDumpType (DWORD)
|
||
|
||
(b) MiniDumps can be generated at any time using the "fs minidump"
|
||
command. This allows you to generate a minidump without
|
||
stopping the process or even requiring the use of a debugger
|
||
on the system.
|
||
|
||
* an RX connection which reports bad ticket now treats it the same way
|
||
the expired ticket is treated. The ticket is removed from the
|
||
connection and a new anonymous connection is established.
|
||
|
||
* fs memdump now requires that the caller be in the AFS Client Admins
|
||
group
|
||
|
||
* additional debugging information is provided in cm_Analyze when the
|
||
error code is ignored.
|
||
|
||
* Fix a regression introduced into the pioctl() client code which
|
||
will cause a crash in winlogon.exe, explorer.exe and fs.exe if
|
||
MIT KFW is not installed. (1.3.82a)
|
||
|
||
* Remove AFS Gateway option from OpenAFS Control Panel (1.3.82a)
|
||
|
||
Since 1.3.81:
|
||
* Fix a race condition in cm_EndCallbackGrantingCall() that
|
||
could leave 'nrevp' pointing to freed memory. In the process,
|
||
optimize the processing to ensure that the applications monitoring
|
||
the status of the stat cache entry are only notified at most
|
||
once.
|
||
|
||
* Conditionalize access to the Explorer Shell AFS->Mount Point
|
||
->Remove menu item. Disable the item if the selected item(s)
|
||
are not mount points.
|
||
|
||
* Activate AFS RPC (RX) Free Packet Queues stored in Thread
|
||
Local Storage. This eliminates thread contention on the
|
||
global RX free packet queue. This should improve performance
|
||
on multi-CPU systems.
|
||
|
||
* Fix the IP address filtering code to properly load/unload
|
||
the IPHelper DLL so that Windows XP/2003 and beyond systems
|
||
do not have to manually probe the registry.
|
||
|
||
* CleanupACLEnt() was not being called consistently with
|
||
the cm_scache_t object referred to by the back pointer
|
||
mutex locked. This could in very rare conditions lead to
|
||
an invalid memory access.
|
||
|
||
* Added a script command to the msi installer "afs_replace"
|
||
which can be used to replace one version of OpenAFS with
|
||
another without requiring an uninstall and reinstall if
|
||
the installed msi is no longer in its original location.
|
||
|
||
* Apparently the problem with multi-domain forests with cross-
|
||
realm trusts to non-Windows realms was not entirely solved.
|
||
The authentication to the AFS SMB service failed because
|
||
the wrong name was being used. Using ASU as an example,
|
||
the authentication was being performed with the name
|
||
"QAAD\user" (an account in the forest root) and not
|
||
"user@ASU.EDU (the MIT Kerberos principal used to login with)
|
||
|
||
The solution was to add an additional dependency on KFW
|
||
in order or to be able to easily obtain the client principal
|
||
name stored in the MSLSA ccache TGT. This information is
|
||
used in two locations:
|
||
|
||
- the pioctl() function
|
||
|
||
- a new WinLogon Event Handler for the "logon" event.
|
||
|
||
The pioctl function will now be able to use the correct
|
||
name when calling WNetAddConnection2() and the "logon"
|
||
event handler will now be able to call WNetAddConnection2().
|
||
The hope is that the "logon" event handler will be called
|
||
before the profile is loaded but I have not guarrantee
|
||
that will happen.
|
||
|
||
Since 1.3.80:
|
||
* Fixed a locking error in cm_TryBulkStat() which had the
|
||
potential of deadlocking the system for the length of time
|
||
it takes to perform a bulk status fetch operation.
|
||
|
||
* Replaced time conversion code (UnixTime <-> FILETIME) to
|
||
be completely arithmetic instead of relying on a bizarre
|
||
algorithm involving a variety of C RTL time functions.
|
||
This has the side effect that UnixTime and FILETIME which
|
||
are both stored in UTC are interpretted as UTC throughout
|
||
the year. Windows will apply the same localization to AFS
|
||
as it does to NTFS. Applications which rely on the ability
|
||
to sync files between the two file systems will no longer
|
||
see the timestamps of files in AFS change an hour relative
|
||
to the files stored in NTFS or Windows based backup devices.
|
||
|
||
* Fixed a invalid memory access under a bizarre circumstance.
|
||
Windows will allow a physical mass media device to be
|
||
installed via Plug N Play to the system and will assign it
|
||
the lowest available drive letter. This is true even if the
|
||
drive letter is currently assigned in the user session to
|
||
a network device via NET USE (or its equivalent.) When this
|
||
happens, queries sent to the CIFS server will contain invalid
|
||
data. This invalid data was not being caught by the AFS
|
||
Client Service and was resulting in a crash when Freelance
|
||
mode was in use.
|
||
|
||
* Fixed a reference count error when registering callbacks
|
||
on a stat cache object if the callback was already registered
|
||
|
||
* Add a case to cm_Analyze() in order to handle the case where
|
||
cm_GetConnByMServers() returns CM_ERROR_NOSUCHVOLUME because
|
||
the server list for the volume is empty. In this case, force
|
||
an update of the volume info and retry.
|
||
|
||
* Insert a missing cm_EndCallbackGrantingCall() which could
|
||
result in threads waiting for a callback to complete to never
|
||
be woken up.
|
||
|
||
* In the persistent cache, there is a maximum number of volume
|
||
entries. Allow volume entries to be reused if the maximum
|
||
number have been allocated and their reference count is zero.
|
||
|
||
* If we already have a dead virtual connection object, don't
|
||
ignore the fact that additional dead vc objects must be taken
|
||
care of.
|
||
|
||
* Removed a deadlock condition introduced in the summer of 2004.
|
||
Do not hold mx locks around calls to RX functions including
|
||
rx_NewCall(). That is what reference counts on the rx_connection
|
||
object are for.
|
||
|
||
* Fixed an initialization error in afslogon.dll which could
|
||
result in random behavior including a failure to terminate
|
||
the NPLogon function. (1.3.80b)
|
||
|
||
* Fixed an error preventing the use of SMB authentication
|
||
on Windows 2000. (1.3.80a)
|
||
|
||
Since 1.3.77:
|
||
* Updated CellServDB to Public CellServDB 16 Mar 2005
|
||
|
||
* 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.
|
||
|
||
* Fixed another case in which the client would replace connections
|
||
to the host when it was not necessary. In this case the
|
||
situation would occur if cryptall was on and the connections
|
||
were unauthenticated due to lack of an appropriate token.
|
||
|
||
* OpenAFS for Windows has failed to work at sites which are
|
||
utilizing a cross-realm trust between an MIT/Heimdal realm
|
||
and a multi-domain Windows forest when the workstation being
|
||
accessed is not located in the root domain. This is caused
|
||
by a bug in the workstation which was triggered after the
|
||
introduction of Windows 2003 Server. When the bug is triggered,
|
||
the workstation attempts to authenticate users to afsd_service.exe
|
||
by contacting the Domain Controller instead of using the
|
||
LSA loopback authentication mechanism.
|
||
|
||
One of the reasons this bug occurs is because the workstation
|
||
does not have a reliable way of knowing that the service whose
|
||
netbios name is "AFS" is located on the workstation. This will
|
||
be fixed starting in Longhorn Beta 1 by Microsoft. The
|
||
"BackConnectionHostNames" registry value will be used to
|
||
indicate that the authentications to that service name should
|
||
be performed using the loopback authentication mechanism.
|
||
|
||
In the meantime, when Logon Caching is enabled, we can force
|
||
afsd_service.exe to authenticate using the logon cache before
|
||
contacting the Domain Controller. This will work with both
|
||
password and smart card based logons.
|
||
|
||
* The allDown logic in cm_ConnByMServers() was wrong. The allDown
|
||
flag should not be cleared if a volume's server reference is
|
||
marked as "offline". In the case where all of the volume's
|
||
servers are either "down" or the volumes are "offline", we want
|
||
cm_Analyze() to process the condition as CM_ERROR_ALLOFFLINE
|
||
instead of as CM_ERROR_TIMEDOUT. In fact, CM_ERROR_TIMEDOUT
|
||
should never occur in practice.
|
||
|
||
In the case of CM_ERROR_ALLOFFLINE, cm_Analyze() will sleep for
|
||
5 seconds, clear the server down and volume busy flags, and
|
||
then force an update from the VLDB. This allows the client to
|
||
update the location of a volume if the reason for it being
|
||
marked offline is because it is being moved. Calls to
|
||
cm_ConnByMServers() will be retried either until success or
|
||
the RDRtimeout period is reached.
|
||
|
||
* Correct the Power Management code behavior in response to
|
||
Standby, Suspend, and Shutdown events. Instead of flushing the
|
||
buffers associated with the mounted SMB submounts, simply write
|
||
all buffers which are marked dirty.
|
||
|
||
* Added support for "TheseCells" to afslogon.dll. "TheseCells"
|
||
provides a list of cells other than the default cell for which
|
||
tokens should be obtained using the default Kerberos principal.
|
||
This functionality is logon domain specific and is only available
|
||
when using KFW for authentication.
|
||
|
||
* Fixed FindNext Invalid Handle error caused by over agressive
|
||
attempts at garbage collecting dirSearch entries when the
|
||
dirSearch ID wraps from the maximum value to 1.
|
||
|
||
* Add support for registry defined server preferences for VLDB and
|
||
File servers. See registry.txt for details.
|
||
|
||
* Increased default cache size to 96MB and default number of cache
|
||
entries to 10,000.
|
||
|
||
* Fixed refCount leaks related to directory lookups and pioctl calls.
|
||
|
||
* Callbacks revoked during a race condition with an attempt to
|
||
obtain the same callback no longer result in an inaccessible
|
||
stat cache entry.
|
||
|
||
* New command line tool:
|
||
|
||
afsdacl : Set or reset the DACL to allow starting or stopping
|
||
the afsd service by any ordinary user.
|
||
|
||
Usage : afsdacl [-set | -reset] [-show]
|
||
-set : Sets the DACL
|
||
-reset : Reset the DACL
|
||
-show : Show current DACL (SDSF)
|
||
|
||
* IP addresses are no longer queried once at startup. Instead IP
|
||
addresses are obtained as needed. Loopback adapter addresses are
|
||
no longer published to the server.
|
||
|
||
* Pay attention to the MIT KFW registry configuration for automatic
|
||
importation of MSLSA credentials. (SOFTWARE\MIT\Leash32,MsLsaImport)
|
||
|
||
* Fix (once again) case-sensitive comparisons which was apparently
|
||
broken in 1.3.72.
|
||
|
||
* Activate support for vos listvol -format
|
||
|
||
* Population of the "AFS Client Admins" group failed on non-English
|
||
versions of Windows because the name of the "Administrators" group
|
||
is localized. Now we lookup the name of the group by using the
|
||
Administrators Group Alias Relative ID.
|
||
|
||
* Multiple cell token acquisition within afscreds.exe was broken in the
|
||
case of Kerberos 5 cross realm authentication. Instead of contacting
|
||
the KDC associated with the cell's realm, afscreds would obtain a
|
||
token from the KDC of the user's realm. This would result in
|
||
"invalid kvno errors" while authenticating to the AFS servers.
|
||
Unauthenticated access would work. The symptoms would vary based upon
|
||
whether or not the VLDB servers had been contacted using unauthenticated
|
||
connections prior to the user obtaining tokens.
|
||
|
||
* The list of ACL entries was becoming corrupted. It appears as if
|
||
an ACL when it expires was not being appropriately cleaned up. In
|
||
fact, it was left in the list of ACLs associated with the scache
|
||
entry.
|
||
|
||
* Changed the default @sys name list to "x86_win32 i386_w2k i386_nt40"
|
||
for 32-bit x86 systems. The default for itanium will be "ia64_win64"
|
||
and "amd64_win64" for amd 64-bit processors.
|
||
|
||
* When executing executables, Windows provides a mechanisms by which
|
||
the normal search for DLLs can be bypassed. If a file foo.exe is
|
||
being executed and there exists a file or directory "foo.exe.local"
|
||
(the contents are ignored if a file), then Windows will search for
|
||
DLLs first in the "foo.exe.local" directory and second in the
|
||
directory in which the "foo.exe" file is located.
|
||
|
||
Previous releases of OAFW would improperly return
|
||
STATUS_NOT_A_DIRECTORY instead of the expected
|
||
STATUS_OBJECT_PATH_NOT_FOUND. This would cause the Windows SMB client
|
||
to terminate the search for the DLL causing the execution of the
|
||
application to fail.
|
||
|
||
* Rework the reference counting of smb_vc_t objects. The references
|
||
stored in the waiting locks were not counted. This could result in
|
||
an assertion if the reference count drops to zero.
|
||
|
||
* "fs wscell" returns "Freelance.Local.Root" for the workstation cell
|
||
when running in freelance mode.
|
||
|
||
* Added support for persistent caching of file contents, stat entries,
|
||
volume data, cell data, and name lookup data. When the registry
|
||
value, "NonPersistentCaching", is not defined or set to 0 the file
|
||
specified by "CachePath" becomes a persistent cache file. The
|
||
size of the cache file is computed at run time. It has a maximum
|
||
size of approximately 1.2GB. The contents of the file will be
|
||
validated according to the rules specified by the "ValidateCache"
|
||
registry value.
|
||
|
||
* Added support for UUIDs. UUIDs are kept for as long as the
|
||
cache file is intact.
|
||
|
||
* Added cmdebug.exe and support cache manager debugging callback
|
||
interfaces in afsd_service.exe.
|
||
|
||
Usage: cmdebug -servers <server machine> [-port <IP port>] [-long]
|
||
[-addrs] [-cache] [-help]
|
||
Where: -long print all info
|
||
-addrs print only host interfaces
|
||
-cache print only cache configuration
|
||
|
||
* Symlinks to \\AFS\[all\]... will now be treated the same as
|
||
symlinks to /afs/.... However, please use /afs/... as otherwise
|
||
the symlinks won't work on Unix.
|
||
|
||
* Correct a problem with local CellID allocation for cells whose
|
||
server list is obtained via DNS instead of a CellServDB file. If
|
||
the DNS information expires the CellID assigned to the entry will
|
||
be changed. This causes all of the cm_scache_t objects which refer
|
||
to the old cellID number to become useless. Attempts to access
|
||
files or directories with cm_scache_t objects using the old cellID
|
||
will fail since the server list cannot be obtained.
|
||
|
||
* Correct deadlock condition in cm_EndCallbackGrantingCall which can
|
||
be triggered if the volume referenced by the cm_scache_t object is
|
||
offline.
|
||
|
||
* The AFS Service needs to respond to SERVICE_ACCEPT_SHUTDOWN messages
|
||
in addition to SERVICE_ACCEPT_STOP.
|
||
|
||
* Move RPC shutdown until after the SMB and RX shutdown procedures
|
||
complete. Block until RPC shutdown is complete.
|
||
|
||
* Modify afslogon.dll (integrated logon) to wait for service if its
|
||
state is START_PENDING. If the timeout period occurs, reset to
|
||
the retry interval and not the sleep interval.
|
||
|
||
* When renewing the server list for a cell obtained via DNS AFSDB
|
||
records, the cm_cell_t entry must be removed from the list of all
|
||
cells. Otherwise, the list of cells will be corrupted.
|
||
|
||
* In the dcache and scache modules, use the cm_scache_t dataVersion
|
||
instead of the cm_fakeDirVersion.
|
||
|
||
* Synchronize fs.c with the unix version.
|
||
|
||
* The variable used to determine whether a file or virtual memory
|
||
mapped cache is used was not properly initialized to a default
|
||
value. If the registry setting "NonPersistentCaching" was not
|
||
set, the choice would be random. Properly initialized to be
|
||
"file".
|
||
|
||
* The memory mapped view was never unmapped before closing the file
|
||
at service shutdown. This is now properly cleaned up.
|
||
|
||
* Default location of Cache file is now %TEMP%\AFSCache
|
||
|
||
Since 1.3.76:
|
||
|
||
* A bug affecting new installations of 1.3.75/76 would result in
|
||
the creating of incorrect mountpoints in the freelance root.afs
|
||
volume for the default cell.
|
||
|
||
If "fs \\afs\all\<cellname>" lists a volume name of "root" instead
|
||
of "root.cell", you have been affected by the bug. To correct the
|
||
problem, execute the following commands:
|
||
|
||
fs rmmount \\afs\all\<cellname>
|
||
fs rmmount \\afs\all\.<cellname>
|
||
|
||
fs mkmount \\afs\all\<cellname> root.cell <cellname>
|
||
fs mkmount \\afs\all\.<cellname> root.cell <cellname> -rw
|
||
|
||
Since 1.3.75:
|
||
|
||
* A bug has been fixed in the auto-generation of Freelance root.afs
|
||
symlinks which produced random entries in the \\AFS\all directory.
|
||
|
||
* Support has been added for multi-homed servers
|
||
|
||
Since 1.3.74:
|
||
* Added a new registry value, "StoreAnsiFilenames", which can be used
|
||
to force the use of ANSI character sets instead of OEM Code Pages.
|
||
This feature is useful when users require the ability to create
|
||
filenames with 8-bit characters and need to access the files from
|
||
both Latin-1 based Unix systems as well as from Windows.
|
||
|
||
Activation of this feature will prevent access to files stored with
|
||
8-bit OEM characters.
|
||
|
||
* Shutdown all SMB threads in a synchronized manner when stopping the
|
||
service.
|
||
|
||
* There is currently a maximum cache size of 1.3GB. The limit is imposed
|
||
by the largest contiguous block of unused memory within the 2GB process
|
||
space which can be assigned to the memory mapped file. Unfortunately,
|
||
when the executable digital signature verification code is activated
|
||
Windows sees fit to further segment the process memory which in turn
|
||
reduces the size of the maximum cache file to less then 800MB. If
|
||
larger cache sizes are desired, a new registry value should be set:
|
||
|
||
HKLM\SOFTWARE\OpenAFS\Client (DWORD) "VerifyServiceSignature" = 0x0
|
||
|
||
Setting this value will disable the runtime verification of digital
|
||
signatures on afsd_service.exe and the afs dlls which it loads. It
|
||
will not disable the the version number check on those same files.
|
||
The signature verification is not a security messure and is only meant
|
||
to enhance the ability to afsd_service.exe to detect potential
|
||
destablizing mixtures of DLLs from incompatible distributions.
|
||
|
||
Added code to auto-disable the signature verification check if
|
||
the desired cache size is greater then 700MB.
|
||
|
||
* Windows' WinTrustVerify(WIN_SPUB_ACTION_PUBLISHED_SOFTWARE) is
|
||
used to verify the validity of the afsd_service.exe binary
|
||
as well as each of the AFS DLLs loaded by the service. Not only
|
||
must the digital signature be valid but the signatures of the
|
||
DLL must be signed by the same entity as the service.
|
||
|
||
* Implement new functions: cm_freelanceMountPointExists and
|
||
cm_freelanceSymlinkExists. Use them along with other validity
|
||
checks in cm_freelanceAddMount and cm_freelanceAddSymlink to
|
||
ensure that name collisions do not occur and that empty strings
|
||
are not valid file names.
|
||
|
||
A symlink may not have a name which would resolve to a valid
|
||
cell name. Doing so would prevent access to the cell.
|
||
|
||
* Add missing cm_HoldSCacheNoLock call to Freelance mount point
|
||
re-initialization code. The reference counts of the fake root.afs
|
||
volume scache object(s) would become invalid when the mount point
|
||
or symlink lists were altered.
|
||
|
||
* Add registry entries to provide mappings from the afsdsbmt.ini
|
||
to the new locations for applications which count on the use
|
||
of the old Profile file APIs. These apps are likely to fail
|
||
if the user does not have administrator privileges and the
|
||
registry is locked down.
|
||
|
||
* The afs_config.exe submounts dialog had two errors.
|
||
First, attempts to remove entries failed because the registry
|
||
key was being opened without KEY_WRITE privileges.
|
||
Second, when editing a submount entry, changing the name
|
||
would add a new key and leave the original one in place.
|
||
Now the original submount will be removed if its name is
|
||
changed.
|
||
|
||
* In recent months there have been several incidents in which
|
||
users have experienced problems starting or accessing
|
||
afsd_service.exe and after significant effort has been spent
|
||
it has turned out that they have two versions of AFS on the
|
||
machine or an inconsistent set of DLLs.
|
||
|
||
Code has now been added to afsd_service.exe which will walk
|
||
the list of modules loaded by afsd_service.exe and validate
|
||
that the version of the AFS DLLs matches the version of the
|
||
afsd_service.exe executable. If they do not match the service
|
||
will not start.
|
||
|
||
* When Freelance mode is enabled and there is no registry
|
||
key HKLM\SOFTWARE\OpenAFS\Client\Freelance, afsd_service.exe
|
||
will attempt to import the afs_freelance.ini file contents.
|
||
If the file does not exist, it was creating a dummy file
|
||
with a r/o and r/w entry for the default cell and then
|
||
importing those values.
|
||
|
||
This process has been changed. The temporary file is no
|
||
longer created. Also, both the OpenAFS Client install
|
||
directory as well as %WINDIR% are checked for previous
|
||
afs_freelance.ini files.
|
||
|
||
* Added support for VL_GetEntryByNameN(). Still need to add
|
||
support for VL_GetEntryByNameU() for multi-homed support.
|
||
|
||
* Fix a deadlock situation in afscreds.exe when canceling an
|
||
auto-generated Obtain Tokens dialog
|
||
|
||
Since 1.3.72/73:
|
||
* Fix the locking of objects during Directory Searches in the
|
||
SMB/CIFS server. The failure to properly lock the reference
|
||
counts was resulting in the premature freeing of smb_dirSearch_t
|
||
objects while they were still in use by the SMB/CIFS client.
|
||
This does not solve the "Invalid Handle" problem.
|
||
|
||
* Fix Find Cell By Name pioctl call to return a valid cell
|
||
name for the Freelance fake root.afs volume.
|
||
"Freelance.Local.Root".
|
||
|
||
* Fix the Explorer Shell Extension Symlinks->Add operation.
|
||
The dialog template was missing and the link destination
|
||
string was too short.
|
||
|
||
* Add support for symlinks to Freelance root.afs volume
|
||
Stored at HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks
|
||
<number> = "<linkname>:<relative-path>."
|
||
Use symlink.exe to create, list, or remove
|
||
|
||
* Remove the fallback to the use of KFW's KRB4 library when obtaining
|
||
tokens. We never obtain KRB4 tickets.
|
||
|
||
* Fix AFS Client Configuration Control Panel to support new SysName
|
||
protocol.
|
||
|
||
* Fix a bug in afsd_service.exe which could result in the SysName
|
||
not being read from the registry.
|
||
|
||
Since 1.3.71:
|
||
* Add code to block the issuance of AFS tokens by aklog.exe or
|
||
afscreds.exe when the Kerberos 5 principal name contains a dot.
|
||
|
||
* Modify the IsAdmin() function to always treat the local SYSTEM
|
||
account as an AFS client administrator. Affects fs.exe and
|
||
afs_config.exe.
|
||
|
||
* Modify the internal handling of Quota Exceeded errors
|
||
|
||
* Upgrade all reference count fields in the Windows cache manager
|
||
and the osi library to use unsigned long instead of signed short.
|
||
A similar fix has been applied to the afs rpc (rx) library.
|
||
|
||
* fix the Windows cache manager to prevent it from replacing the
|
||
rx_connection object associated with the cm_conn_t object on each
|
||
and every operation if "fs crypt" was set. This explains the
|
||
dramatic performance difference when crypt is used vs clear.
|
||
The problem: 'cryptall', a boolean flag indicating whether or not
|
||
"fs crypt" is set, was being compared to the rx_connection
|
||
cryptlevel which is either rxkad_clear:0 or rxkad_crypt:2.
|
||
1 != 2 and therefore the rx_connection was always destroyed
|
||
and replaced on each and every operation.
|
||
|
||
Lock the cm_conn_t object around every call to RXAFS_xxxx functions.
|
||
It is not safe for the cm_conn_t object to not be locked because
|
||
rx_DestroyConnection might be called from another thread if:
|
||
- the user's tokens have changed or expired
|
||
- the crypt mode has changed
|
||
|
||
This fix appears to have also taken care of the problems associated
|
||
with Overlapped Writes resulting in Delayed Write errors.
|
||
|
||
* fix NSIS installer's AdminGroup.exe to properly create and
|
||
remove groups when given -create or -remove. The string comparison
|
||
test was wrong.
|
||
|
||
* fs sysname now accepts a list of sysname values
|
||
|
||
* added a new registry value HKLM\SOFTWARE\OpenAFS\Client "IoctlDebug"
|
||
DWORD which when set to a non-zero value will cause error message
|
||
text to be output to stderr from the pioctl() routine. Useful in
|
||
debugging failures of fs.exe, tokens.exe, etc.
|
||
|
||
* added a test to the power management code to only perform a
|
||
flush operation if there is at least one network adapter which
|
||
is not a loopback adapter.
|
||
|
||
* Fix bug in loading of registry value HKLM\SOFTWARE\OpenAFS\Client
|
||
"EnableKFW". This value will not be read if the key
|
||
HKCU\SOFTWARE\OpenAFS\Client exists; even if the "EnableKFW"
|
||
value under that key does not.
|
||
|
||
* provide mechanisms to force the use of krb524d for Kerberos 5
|
||
ticket to AFS token conversion. For afslogon.dll and afscreds.exe
|
||
there is a new registry value "Use524" and for aklog.exe a new
|
||
command line parameter "-m".
|
||
|
||
* Fix the pattern matching algorithm to properly match patterns
|
||
ending with a '*'.
|
||
|
||
* smb_ReceiveCoreRename() was factored to produce smb_Rename()
|
||
which is used by both the original function and the new
|
||
smb_ReceiveNTRename(). smb_ReceiveNTRename() supports the
|
||
creation of HardLinks in addition to Renaming. smb_Link()
|
||
is a new function which creates HardLinks via cm_Link().
|
||
cm_Link() is a new vnodeops function which creates links
|
||
using RXAFS_Link().
|
||
|
||
smb_ReceiveNTRename() does not support the File Copy and
|
||
Move Cluster Information operations described in its interface.
|
||
ReceiveNTRename is under documented in CIFS-TR-1p00_FINAL.pdf.
|
||
|
||
* When opening files via symlinks, we should follow the symlinks
|
||
until we reach the actual file stat cache entry. The stat cache
|
||
entry of the file should then be stored in the FID instead of
|
||
stat scache entry of the symlink.
|
||
|
||
* return bad operation errors for all unimplemented functions
|
||
even if we do not know the functions exist.
|
||
|
||
* Log bad packets and unknown operation packets to the trace log
|
||
|
||
* Map CM_ERROR_BADOP to STATUS_NOT_SUPPORTED instead of
|
||
0xC09820FF
|
||
|
||
* Update list of known CIFS operations to include all those listed
|
||
in CIFS-TR-1p00_FINAL.pdf.
|
||
|
||
* Modify the handling of HKLM\SOFTWARE\OpenAFS\Client\Submounts
|
||
to support the REG_EXPAND_SZ type.
|
||
|
||
Since 1.3.70:
|
||
* A new Windows authorization group "AFS Client Admins" is now
|
||
created and populated with the members of the "Administrators"
|
||
group. The group is used to determine which accounts on the
|
||
machine may be used to modify the AFS Client Configuration via
|
||
the UI and command line tools. afs_config.exe, fs.exe,
|
||
|
||
* Modify the WinLogon Logoff Event Handler to query NT4 domain
|
||
controllers for the remote profile path if Active Directory
|
||
services are not available.
|
||
|
||
* Fix aklog.exe to not add the AFS ID to the username
|
||
|
||
* PTS registration of new users to foreign cells has been added to
|
||
afscreds.exe
|
||
|
||
* The cm_Daemon thread is used to perform checks for
|
||
down servers, up servers, volumes, callback expirations,
|
||
lock maintenance and token expiration. Due to a gaff in
|
||
larger integer division the thread never performed any
|
||
work. Instead the current time computation would always
|
||
be less then the trigger times. This had an adverse affect
|
||
on the client's ability to maintain communication with servers,
|
||
keep volumes up to date, and flush user tokens and acls
|
||
when they have expired. This was broken when the 1.3 branch
|
||
was modified to support VC7 which no longer included
|
||
largeint.lib
|
||
|
||
* An initialization problem with the Freelance code was
|
||
detected while fixing the callbackRequest. The cm_rootSCachep
|
||
object is obtained during afsd_InitDaemons() but the callback
|
||
information is incomplete. The callback information will not
|
||
be obtained until cm_MergeStatus is called from within
|
||
cm_GetCallback. Unfortunately, cm_SyncOp did not properly
|
||
test for the conditions under which the callback information
|
||
must be obtained.
|
||
|
||
* Reports have been filed indicating that callbacks were
|
||
being lost. An examination of the code indicated that the
|
||
cm_server_t objects were not being properly reference
|
||
counted by the cm_scache_t and cm_callbackRequest_t objects.
|
||
In particular, the cm_server_t objects may have been freed
|
||
from beneath the cm_conn_t objects.
|
||
|
||
All of the reference counting is now done via the functions:
|
||
cm_GetServer
|
||
cm_GetServerNoLock
|
||
cm_PutServer
|
||
cm_PutServerNoLock
|
||
this improves the ability to track the referrals.
|
||
|
||
Each cm_BeginCallbackGranting Call now allocates a reference
|
||
to the cm_server_t. The cm_EndCallbackGrantingCall either
|
||
frees the reference or transfers it to the cm_scache_t
|
||
cbServerp field. These are then appropriately tracked
|
||
through the cm_Analyze call.
|
||
|
||
* Ensure that the dnlc hash table is the same size as the
|
||
dir name hash table (as per original author's note).
|
||
Increase the dnlc CM_AFSNCNAMESIZE to a multiple of 8
|
||
for compatibility with 64-bit systems.
|
||
|
||
* fix smb_ApplyV3DirListPatches to properly apply the hidden
|
||
attribute to dotfiles when the infoLevel < 0x101 and
|
||
cm_SyncOp has failed.
|
||
|
||
* Fix the Freelance registry initialization code. There
|
||
was a possibility that some systems could end up with
|
||
garbage in the registry during a clean install.
|
||
|
||
Since 1.3.66:
|
||
* file and directory names beginning with "." will now be given the
|
||
hidden attribute when the volume access is anonymous. this matches
|
||
the behavior when the volume access is via an authenticated user.
|
||
|
||
* Added a change monitor to the HKLM\SOFTWARE\OpenAFS\Client\Freelance
|
||
key. When a change occurs mark the root.afs data as invalid and
|
||
for it to be reloaded on the next access. This allows administrators
|
||
to modify the mount point list without restarting the service.
|
||
|
||
The freelance client used to provide a fake modification time for
|
||
the root.afs volume data and its mount points of 7/09/2001 14:24 EDT.
|
||
Added code to extract the last modification time of the Freelance
|
||
registry key and use that instead. The time now represents the
|
||
most recent mount point change.
|
||
|
||
* PTS registration of new users to foreign cells has been added to
|
||
aklog.exe
|
||
|
||
* Additional Cache Control and Credential Manager options have been
|
||
added to the WiX installer. See deployment guide for details.
|
||
|
||
* The CachePath setting is now optionally a REG_EXPAND_SZ type
|
||
|
||
* The WiX installer has been upgraded. Version 2.0.1927.1 is now
|
||
required.
|
||
|
||
* The loopback installation code may have had a problem updating the
|
||
%ETC%\HOSTS file which could have resulted in a premature failure.
|
||
Work around code has been added for the case where the file cannot
|
||
be deleted.
|
||
|
||
* The default max chunksize was increased from 15 (32K) to 17 (128K)
|
||
because Windows sends 64K blocks when using overlapped writes.
|
||
|
||
* The default number of server threads was increased from 4 to 25 to
|
||
better handle overlapped writes.
|
||
|
||
* The "AfscredsShortcutParams" registry value was not being properly
|
||
loaded by afscreds.exe. Therefore, the default value was always being
|
||
used instead of the value set by the installer.
|
||
|
||
* Windows XP provides downgrade attack detection to prevent an attacker
|
||
from being able to force the use of NTLM simply by disrupting
|
||
communication with the KDC. This attack cannot exist between the
|
||
Windows CIFS client and the AFS Client Service. Therefore, when a
|
||
downgrade has been detected the afs pioctl library will force the
|
||
establishment of a new CIFS connection using NTLM.
|
||
|
||
* A locking error was discovered surrounding all references to volume
|
||
server lists within the cm_cell.c source file.
|
||
|
||
* The logged into Windows username was incorrect on Terminal Server
|
||
machines.
|
||
|
||
* A new registry value "NonPersistentCaching" was added to the service
|
||
parameters key. When set to a non-zero value, the afs cache is stored
|
||
in the Windows paging file. There are two limitations to choosing
|
||
this option:
|
||
1. when persistent caching is implemented it won't work with
|
||
this flag set since there will be nothing to persist.
|
||
2. with this flag set the initial paging allocation cannot be
|
||
changed while the service is running
|
||
|
||
* An initialization bug was discovered in aklog.exe which affected users
|
||
who have a domain name for their afs servers which could not be mapped
|
||
to a realm
|
||
|
||
Since 1.3.65:
|
||
* afs_config.exe now validates cell names against DNS in addition
|
||
to the CellServDB file.
|
||
|
||
* In order to allow the freelance client to connect to a volume with ID
|
||
equal to 1 on the default cell we changed the fake root.afs volume ID
|
||
once again. This time we choose 0xFFFFFFFF. In addition, we change
|
||
the cell ID of the fake root.afs volume from 1 to 0xFFFFFFFF as well.
|
||
It will now be impossible for a volume ID to match that of another
|
||
cell unless the client is connected to 0xFFFFFFFD cells. That should
|
||
be enough room for growth.
|
||
|
||
* Fix "fs mkmount" command to work with UNC paths and when
|
||
started from non-AFS drives. It is now possible to create a mount
|
||
point in the freelance fake root.afs volume with the command
|
||
|
||
fs mkmount \\AFS\all\<directory-name> <volume-name> <cellname>
|
||
|
||
For example,
|
||
|
||
fs mkmount \\AFS\all\openafs.org root.cell openafs.org
|
||
fs mkmount \\AFS\all\.openafs.org root.cell openafs.org -rw
|
||
|
||
* The algorithm used to re-attempt access to the servers associated with
|
||
a volume has been altered to properly address the case in which all
|
||
servers have been marked down. The previous algorithm did not reset
|
||
the server's down flags so the servers were never actually retried.
|
||
This caused a problem with active volumes if the network connectivity
|
||
was lost as could be the case with a network cable removal, wireless
|
||
drop, or laptop hibernation. With the fix volume access is restored
|
||
almost instantenously when network connectivity becomes available.
|
||
|
||
* Support for SMB/CIFS browsing has been added to the AFS Client Service
|
||
SMB server. It is now possible to use "NET VIEW \\AFS" to obtain a
|
||
listing of AFS submounts and freelance mount points. Support for
|
||
NETSHAREENUM, NETSHAREGETINFO, NETSERVERENUM2, NETSERVERGETINFO
|
||
significantly enhances the behavior of AFS volumes within the Explorer
|
||
Shell. For instance, "AFS" now shows up as server in the Explorer
|
||
with each submount or freelance mount point visible as a share.
|
||
The right click menu in each folder now works with full functionality
|
||
on a consistent basis.
|
||
|
||
* The network provider can be configured to have different behavior
|
||
depending on the domain that the user logs into. These settings are
|
||
only relevant when using integrated login. A domain refers to an
|
||
Active Directory (AD) domain, a trusted Kerberos (non-AD) realm or the
|
||
local machine (i.e. local account logins). The domain name that is
|
||
used for selecting the domain would be the domain that is passed into
|
||
the NPLogonNotify function of the network provider. (see registry.txt
|
||
for details)
|
||
|
||
* Added a new registry value [HKCU\SOFTWARE\OpenAFS\Client]
|
||
"Authentication Cell" which may be used to specify a default
|
||
authentication cell for afscreds.exe which is different from
|
||
the default cell for the AFS Client Service daemon.
|
||
|
||
* Added a Logoff WinLogon Event Notification function to afslogon.dll.
|
||
afslogon.dll moved to %WINDIR%\System32\.
|
||
New registry entries added to register the dll for Winlogon events.
|
||
|
||
The logoff event will now force a call to ktc_ForgetAllTokens()
|
||
using the context of the user being logged off as long as the
|
||
user's profile is not loaded from within AFS. If the profile
|
||
was loaded from AFS we can't release the tokens since the Logoff
|
||
event is triggered prior to the profile being written back to
|
||
the its source location. This is now performed in an XP SP2
|
||
safe manner.
|
||
|
||
* Windows XP SP2 Internet Connection Firewall interoperability
|
||
has been added.
|
||
|
||
* The %WINDIR%\afsdsbmt.ini contains four sections:
|
||
Submounts, Drive Mappings, Active Maps and CSC Policies.
|
||
The Submounts and CSC policies are now stored in the registry under
|
||
[HKLM\SOFTWARE\OpenAFS\Client\Submounts]
|
||
[HKLM\SOFTWARE\OpenAFS\Client\CSCPolicy]
|
||
The Drive Mappings and Active Maps are stored in the registry under
|
||
[HKCU\SOFTWARE\OpenAFS\Client\Mappings]
|
||
[HKCU\SOFTWARE\OpenAFS\Client\Active Maps]
|
||
|
||
There is no automatic migration of this data as it would be impossible
|
||
to consistently migrate data to user profiles which may not be active
|
||
when the machine is updated.
|
||
|
||
* The %WINDIR%\afs_freelance.ini contains lists of mountpoints for the
|
||
fake root.afs volume. For the same reasons as for the cellservdb file,
|
||
this information should not be in %WINDIR%. This information is now
|
||
kept under the registry key
|
||
[HKLM\SOFTWARE\OpenAFS\Client\Freelance]
|
||
|
||
The data from the afs_freelance.ini file will be automatically
|
||
migrated to the registry on first execution of afsd_service.exe
|
||
|
||
* Keeping the CellServDB file in the location %WINDIR%\afsdcell.ini is
|
||
troublesome for several reasons. One, it is confusing for those who
|
||
expect the file to be named "CellServDB" instead of "afsdcell.ini".
|
||
Two, this file is not a Windows Profile formatted file. Three,
|
||
applications should not be reading or writing to %WINDIR%. It causes
|
||
problems for Windows Terminal Server.
|
||
|
||
The new location of CellServDB will be the OpenAFS Client install
|
||
directory which is by default C:\Program Files\OpenAFS\Client and can
|
||
be determined by querying the registry for
|
||
[HKLM\SOFTWARE\TransarcCorporation\AFS Client\CurrentVersion]PathName
|
||
|
||
The existing afsdcell.ini will be migrated by the NSIS installer.
|
||
The Wix installer must still be updated to do the same.
|
||
|
||
* Change NSIS installer to use DNS by default; to remove Integrated Logon
|
||
High Security mode; and to add Terminal Services compatibility registry
|
||
entries to allow the OpenAFS tools to find the afsdcell.ini and other
|
||
configuration files in %WINDIR%.
|
||
|
||
* Add support for authenticated SMB connections. This will remove
|
||
the need for high security mode in most situations. Both NTLM
|
||
and Extended Security (GSS SPNEGO) modes are supported. Effectively,
|
||
only NTLM can be used even though Kerberos is now supported. The
|
||
reason is that it is not possible to construct a service principal
|
||
which is unique to each individual machine.
|
||
|
||
SMB Extended Auth does not work on XP SP2 unless one of two registry
|
||
modifications are made:
|
||
|
||
(1) To disable the check for matching host names on loopback connections
|
||
set this key. This does not require a reboot:
|
||
|
||
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
|
||
"DisableLoopbackCheck"=dword:00000001
|
||
|
||
(2) To add the AFS SMB/CIFS service name to an approved list. This
|
||
does require a reboot:
|
||
|
||
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0]
|
||
"BackConnectionHostNames"=multi-sz "AFS" "MACHINE-AFS"
|
||
|
||
afsd_service.exe will automatically add the current Netbios Name
|
||
to the BackConnectionHostNames list and then temporarily disable
|
||
the loopback check for one cycle of startup/shutdown of the service.
|
||
We assume most folks do not start/stop without a reboot so this
|
||
will be adequate in most cases.
|
||
|
||
* Fix security hole in afslogon.dll which allowed passwords to be
|
||
sent in clear text to the KDC in a misformed principal name.
|
||
|
||
* Fix cm_GetCell() to properly handle expired dns entries
|
||
without crashing
|
||
|
||
* If Freelance mode is active and the afs_freelance.ini
|
||
file does not exist, do not create an empty file.
|
||
Instead create a file containing ro and rw mountpoints
|
||
to the default cell using the standard conventions.
|
||
|
||
* Modify the Freelance support to handle the ability
|
||
to create rw mount points in the fake root.afs volume.
|
||
|
||
* Changed the RPC mechanism used for token setting from
|
||
named pipes to local. Use of named pipes can be restored
|
||
by setting the environment variable AFS_RPC_PROTSEQ to
|
||
"ncacn_np".
|
||
|
||
Named pipes were required when a Windows 9x system was
|
||
using a NT system in gateway mode which is incompatible
|
||
with our use of local loopback adapters.
|
||
|
||
* In afscreds.exe, if a username of the form user@REALM is
|
||
specified and no password is specified, do not perform a
|
||
kinit operation. Only perform the aklog functionality.
|
||
|
||
* Add a new registry value which allows the number of processors
|
||
on which afsd_service.exe executes to be restricted. Valid
|
||
values are 1..numOfProcessors
|
||
|
||
HKLM\SYSTEM\CurrentControlSet\Services\TransarcAfsDaemon\Parameters
|
||
(DWORD) MaxCPUs
|
||
|
||
Since 1.3.64:
|
||
* A second MSI based installer option is now available.
|
||
|
||
* Fixed Kerberos 5 kinit functionality in afscreds.exe to properly
|
||
request tickets for user/instance@REALM instead of just user@REALM
|
||
|
||
* Modify the Power Management Notify routine to wait for the Hard Dead
|
||
timeout period instead of a fixed 19 seconds. With the longer timeout
|
||
periods Hibernation and Standby could never succeed when network
|
||
connectivity is not available.
|
||
|
||
* The following fs.exe commands are now restricted to Administrator:
|
||
- checkservers with a non-zero timer value
|
||
- setcachesize
|
||
- newcell
|
||
- sysname with a new sysname list
|
||
- exportafs
|
||
- setcell
|
||
- setserverprefs
|
||
- storebehind
|
||
- setcrypt
|
||
- cscpolicy
|
||
- trace
|
||
|
||
setting the default sysname for a machine should be done via the
|
||
registry and not via "fs sysname".
|
||
|
||
* NSIS installer adds options to install Debugging Symbols
|
||
and the Microsoft Loopback Adapter; the user is now also
|
||
given the ability to select the afscreds.exe startup options.
|
||
|
||
* Build system modified to generate symbols for FREE (aka RELEASE)
|
||
builds as well as CHECKED (aka DEBUG) builds
|
||
|
||
* Sites which have a volume ID of 0x20000001 assigned to their
|
||
root.cell volumes have been experiencing problems with accessing
|
||
the root.cell volume of their cell when Freelance mode has been
|
||
active. This was because 0x20000001 was assigned to the fake
|
||
root.afs volume created by freelance. The fake volume id is
|
||
now set to 0x00000001 to prevent conflicts.
|
||
|
||
* The timeout logic in the AFS Client Service has been wrong
|
||
for sometime. It is based on two different assumptions.
|
||
First, the SMB client timeout is a fix value as was the case
|
||
with OS/2 Lan Manager. This assumption is incorrect. The
|
||
SMB timeout in Windows is a dynamic value computed based upon
|
||
a fixed minimum timeout to which is added time based upon the
|
||
size of the request and the performance characteristics of
|
||
the connection. Second, it is the responsibility of the
|
||
SMB Server to enforce the timeout requirements of the client.
|
||
This is untrue. The SMB Server cannot be expected to know
|
||
the requirements of the client. More importantly, if the
|
||
SMB server uses the SMB client timeout as a value to restrict
|
||
its behavior as an RX client, the performance characteristics
|
||
of the local SMB session would be used to prematurely terminate
|
||
WAN connections with significantly different performance
|
||
characteristics.
|
||
|
||
The timeout logic has therefore been modified in the following
|
||
manner:
|
||
. the Lan Manager Workstation (SMB) Session Timeout is used only
|
||
as a basis for configuring the Connection Dead Timeout
|
||
and Hard Dead Timeout values. The Connection Dead Timeout
|
||
must be at least 15 seconds longer than the SMB Timeout
|
||
and the Hard Dead Timeout must be at least double the
|
||
Connection Dead Timeout.
|
||
. New registry entries have been added to allow the Connection
|
||
Dead Timeout and Hard Dead Timeout values independent of the
|
||
Lan Manager Workstation Session Timeout
|
||
. The test to enforce the SMB Client Timeout has been removed.
|
||
|
||
One of the side-effects of removing the enforcement of the SMB
|
||
Client Timeout is that regardless of whether or not the SMB client
|
||
is available to receive the response (and how would the SMB server
|
||
know) the RX protocol response can be used to update the AFS
|
||
Client Service state for ready access by future SMB client
|
||
requests.
|
||
|
||
This should be the end of the "Server paused or restarting messages"
|
||
|
||
* Add support for arbitrary UNC paths to the pioctl() support.
|
||
This enables the fs commands as well as the AFS Shell Extension
|
||
to work correctly when UNC paths are being used.
|
||
|
||
* Fix afscreds.exe (by updating afskfw.lib) to search for cells via
|
||
DNS if the cell configuration cannot be determined via CellServDB
|
||
|
||
* Add debug info to test whether CM_BUF_WAITING or CM_SCACHE_WAITING
|
||
are ever set more than once at a time
|
||
|
||
* Fix the management of lists of cm_cell_t structures when using
|
||
DNS to lookup cell information. The previous code would fail to
|
||
reuse the same cellID for a cell if DNS was used more than once
|
||
for a given cell name. When the ttl expired, a single cm_cell_t
|
||
could be inserted into the cm_allCellsp list more than once
|
||
producing a loop. In addition, the vlServerp list belonging to
|
||
the cell was not freed resulting in improper refCounting of the
|
||
servers.
|
||
|
||
* Add DNS support to cm_IoctlNewCell() which previous only examined
|
||
the CellServDB file
|
||
|
||
* Add cm_FreeServer() function and call it from cm_FreeServerList()
|
||
to properly garbage collect cm_server_t objects
|
||
|
||
* Add numVCs variable to smb.c to track the number of smb_vc_t
|
||
objects created and use it to initialize the vcID field which
|
||
previously was set to 0 in all objects resulting in FindByID
|
||
collisions.
|
||
|
||
* Fixed DNS lookups to work consistently throughout the OpenAFS
|
||
product instead of just from within the afsd_service.exe
|
||
|
||
* Added a runtime check to ensure that AFS Client Service SMB
|
||
Server is accepting connections before attempting to mount
|
||
global drives.
|
||
|
||
* Read IP addresses for volume servers out of the CellServDB
|
||
file if gethostbyname() on the hostname fails.
|
||
|
||
* Fix getcellconfig() to populate both the Hostnames as well
|
||
as IP addresses when loading cell data via DNS
|
||
|
||
* Increase the Connection Dead Time to 50 from 20 seconds
|
||
Increase the Hard Dead Time to 120 from 40 seconds
|
||
(matches the Unix values)
|
||
|
||
* Fixed an assertion validating the number of allocated NCBs
|
||
|
||
* Fixed the build environment to consistently build for
|
||
Windows 2000 and above. (APPVER = 5.0)
|
||
|
||
* Fixed rx_debug to properly validate the receipt in incoming
|
||
data with select() and recvfrom(). Do not copy data out of
|
||
the socket buffer unless success is indicated.
|
||
|
||
Since 1.3.63:
|
||
* afsd_service.exe will now display a message box to the
|
||
desktop when it terminates due to an IP Address Change.
|
||
|
||
* installer no longer deletes AFS Server configuration data
|
||
on uninstall
|
||
|
||
* installer generates a warning dialog if the RPC service
|
||
is not properly configured
|
||
|
||
* installer compressed with lzma instead of bzip2
|
||
|
||
* afsd_service.exe shutdown crash solved once and for all
|
||
|
||
* reference counting of smb_vc_t data structures improved
|
||
|
||
* name space collision of smb_fid_t event objects corrected
|
||
|
||
* the output of "fs memdump" is now written to
|
||
%WINDIR%\TEMP\afsd_alloc.log
|
||
|
||
* the file TaAfsApp_1033.dll is now properly installed allowing
|
||
the User Manager to start
|
||
|
||
* a new algorithm is used for computing filename pattern matches
|
||
|
||
* afscreds.exe now accepts user names containing instance
|
||
fields.
|
||
|
||
* Fix the Directory Name Lookup Cache to be case-sensitive.
|
||
This is crucial in environments in which a Windows client
|
||
is accessing a directory with more than one filename that
|
||
differs only by case. If the directory contains "FOO"
|
||
and "Foo". You want "DEL Foo" to delete the correct one.
|
||
We still have a problem in that "DEL foo" will delete a
|
||
random filename. This will be addressed in a future release.
|
||
|
||
* Fix afscreds.exe -M option (renewMaps) to work when High
|
||
Security mode is off. Also, remember to disable the ActiveMap
|
||
flag in afsdsbmt.ini when a drive mapping is removed.
|
||
|
||
* Updates to NSIS installer script. AFS Server configuration
|
||
data will not be destroyed on un-install or re-install.
|
||
Use a better compression algorithm.
|
||
|
||
* afslogon.dll now uses KFW to obtain tokens when available
|
||
|
||
* afslogon.dll when given an all uppercase username will
|
||
attempt to authenticate with both the uppercase name
|
||
and an all lowercase variation
|
||
|
||
* DST modification removed. The fix appears to make things
|
||
worse after a reboot of the machine.
|
||
|
||
* fs.exe: added "cscpolicy" which is used to
|
||
change client side caching policy for AFS shares
|
||
|
||
Usage: fs cscpolicy [-share <AFS share>] [-manual] [-programs]
|
||
[-documents] [-disable] [-help]
|
||
|
||
* Several uninitialized variables have been initialized
|
||
|
||
* It is now possible to obtain tokens using cross realm
|
||
Kerberos within afscreds.exe:
|
||
cell: dementia.org
|
||
user: jaltman@ATHENA.MIT.EDU
|
||
password: xxxxxxxx
|
||
Will obtain a cross realm ticket for jaltman/DEMENTIA.ORG@ATHENA.MIT.EDU
|
||
will will in turn be used to obtain afs@DEMENTIA.ORG.
|
||
The resulting token will be stored with the display name
|
||
jaltman@ATHENA.MIT.EDU@dementia.org
|
||
|
||
* aklog.exe has been added to the client
|
||
|
||
Usage: aklog [-d] [[-cell | -c] cell [-k krb_realm]]
|
||
[[-p | -path] pathname]
|
||
[-noprdb] [-force]
|
||
[-5 | -4]
|
||
|
||
-d gives debugging information.
|
||
krb_realm is the kerberos realm of a cell.
|
||
pathname is the name of a directory to which you wish to authenticate.
|
||
-noprdb means don't try to determine AFS ID.
|
||
-5 or -4 selects whether to use Kerberos V or Kerberos IV.
|
||
(default is Kerberos V)
|
||
No commandline arguments means authenticate to the local cell.
|
||
|
||
Since 1.3.62:
|
||
* All of the resource files have been restructured to adhere to
|
||
a set of rules IBM implemented for loading string resources.
|
||
These rules had either been forgotten or were not discovered
|
||
by folks working on the OpenAFS sources. The end result was
|
||
memory corruption. This is primary item which was preventing
|
||
the AFS Server from working.
|
||
|
||
* Increased the size of the maximum ticket size stored in a token
|
||
from 344 bytes to 12,000. Increased the buffers used to convey
|
||
messages between the pioctl() caller and the SMB Server from
|
||
1000 bytes to 12,512. The code appeared to have been writing
|
||
above the top of the stack by quite a few number of bytes.
|
||
(The increased ticket size is necessary for the next item.)
|
||
|
||
* When obtaining AFS Tokens via KFW, krb524 is no longer required.
|
||
Instead the raw Kerberos 5 ticket is used in its entirety. This
|
||
is extremely important as it allows us to use pure Kerberos 5 KDCs
|
||
as the source of the AFS authentication. The use of up to 12,000 byte
|
||
tickets will allow tickets produced by all versions of Microsoft
|
||
Active Directory to be used.
|
||
- create a user account.
|
||
- designate it DES only
|
||
- disable pre-auth
|
||
- specify its UPN to be "afs@realm"
|
||
- assign a SPN of "afs/cellname" to the UPN with setspn.exe
|
||
|
||
* Do not enforce the funky 8dot3 pattern matching rule that the first "."
|
||
is special when using long file names. (you must use "*.*" and not "*")
|
||
Instead only enforce it when performing 8dot3 searches.
|
||
|
||
* Fixed the DST problem with creation times being set one hour ahead
|
||
|
||
* Fixed the problem when using \\afs\cell-alias. For example,
|
||
\\afs\uncc instead of \\afs\uncc.edu. Do not a new cell struct
|
||
for the alias name; instead simply expand the name. One of the
|
||
symptoms of this problem was a loss of acquired tokens.
|
||
|
||
* Fixed the AFS Shell Extension. The Symbolic Link menu was empty
|
||
of strings. (Only English strings provided.)
|
||
|
||
* Fixed the installer to properly replace in use files.
|
||
|
||
* Fixed the build system to cleanup generated component version files
|
||
|
||
* The release build compiled with MSVC 6.0 compiler to avoid the
|
||
afsd_service.exe shutdown crash. This does not solve the problem
|
||
but simply avoids it for the time being.
|
||
|
||
Since 1.3.61:
|
||
|
||
* fix afslogon.dll to not corrupt memory when High Security mode
|
||
is not used.
|
||
|
||
* fix afsd_service.exe to not attempt to restore the stack when
|
||
an exception occurs. (not safe in multi-threaded programs)
|
||
|
||
* fix uninstaller to properly remove the CRT and MFC DLLs
|
||
|
||
* remove a Message Box from afscreds.exe when getcellconfig()
|
||
fails on a kerberos realm which is not a cell
|
||
|
||
The following is a list of changes to the OpenAFS for Window client
|
||
since 1.3.60.
|
||
|
||
* "fs setserverprefs" will leave afsd service deadlocked
|
||
|
||
* "vos listaddrs" will core dump
|
||
|
||
* installer sets the appropriate keys to support Integrated Logon
|
||
|
||
* installer disables the "Find Lana by Name" functionality as it
|
||
was causing headaches for many users
|
||
|
||
* fix the intermittent crash of the power management thread when
|
||
shutting down the AFS Client Service
|
||
|
||
* optimizes the obtain drive mount list functionality which is
|
||
executed every time the mount tab in afscreds.exe and afs_config.exe
|
||
are refreshed. (this happens a lot)
|
||
|
||
* fix the service shutdown logic. add the STOP_PENDING state
|
||
and do not accept additional service events after we declare
|
||
ourselves STOPPED.
|
||
|
||
The following is a list of changes to the OpenAFS for Window client
|
||
since 1.2.10.
|
||
|
||
* flexelint was run against the source tree and hundreds (perhaps
|
||
thousands) of corrections were applied to ensure prototypes
|
||
were in use; types were used consistently; variables were
|
||
initialized; unused variables were removed; etc.
|
||
|
||
* A wide variety of instrumentation was added including the
|
||
ability to produce a stack trace from within afsd_service.exe
|
||
when it crashes.
|
||
|
||
* Dynamic configuration of the RDRtimeout value based upon the
|
||
LanMan Workstation Session Timeout
|
||
|
||
* The mount root no longer needs to be called "/afs". This
|
||
is now set by a registry value "MountRoot" within the key
|
||
HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters
|
||
|
||
* The cell list is now only read out of afsdcell.ini when the
|
||
file changes instead of each time a cell is resolved.
|
||
|
||
* Thread synchronization was added to cm_server.c and ktc_nt.c
|
||
|
||
* All calls to GlobalAlloc()/GlobalFree() were replaced with
|
||
calloc()/free(). The Global functions were needed on Windows 3.x
|
||
but have caused a variety of problems on the Win32 platforms.
|
||
Avoiding them is highly recommended by several Microsoft
|
||
Knowledgebase articles
|
||
|
||
* Support for Symbolic Links added to the AFS Shell Extension
|
||
|
||
* Added a registry value "OverlayEnabled" to determine if
|
||
Shell Extension Overlays should be enabled.
|
||
HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters
|
||
|
||
* New Build system to support VC6, VC.NET, VC.NET2003 compilers and
|
||
separate trees for checked and free builds. Build system supports
|
||
a custom directory src\WINNT\extra which can be used as a grafting
|
||
location of organization specific additions to the build tree.
|
||
|
||
* New installer built using NSIS 2.0.
|
||
|
||
* Named all kernel objects in order to allow them to be monitored
|
||
with tools such as SysInternals' ProcExp.exe.
|
||
|
||
* Introduced new EventLog framework for AFSD
|
||
|
||
* Introduced Power Management interface to AFSD for Standby and
|
||
Hibernate modes to allow cache to be flushed prior to network
|
||
disconnect
|
||
|
||
* Utilize Win32 DNSQuery API instead of internal routines. This
|
||
allows DNS SRV queries to be sent to all current domain name
|
||
servers. Not just one specified in an INI file. DNS is now
|
||
always activated.
|
||
|
||
* "NetbiosName" registry value may be used to specify a fixed
|
||
Netbios Name such as "AFS" to be used instead of "HOSTNAME-AFS"
|
||
when the loopback adapter is in use. If you need to use the
|
||
old notation with a loopback adapter installed specify a registry
|
||
entry of
|
||
|
||
"NetbiosName" REG_EXPAND_SZ = "%COMPUTERNAME%-AFS"
|
||
|
||
* Refactor all modules which depend on LAN Adapter and NetbiosName
|
||
determination in a new library: lanahelper.lib. This allows for
|
||
consistent behavior throughout the product.
|
||
|
||
* Move the afsd.log and afsd_init.log files to the directory specified
|
||
by the "TEMP" environment variable. This is usually %WINDIR%\TEMP
|
||
for services. Added the Date to the log entries.
|
||
|
||
* New registry value "RxMaxMTU" used to limit the size of the RX
|
||
packets sent by the AFS Client Service to the Server. In order
|
||
to enable OpenAFS to work across the Cisco IPSec VPN the packet
|
||
size must be restricted to 1264 or smaller. The latest NSIS
|
||
installer sets a value of 1260 by default.
|
||
|
||
* New registry value "RxNoJumbo" to disable the use of Jumbo Rx
|
||
packets. This is not needed in order to work across the Cisco
|
||
VPN but might be needed for other network environments. This
|
||
value is not set by the NSIS installer.
|
||
|
||
* New registry value "HideDotFiles" is used to apply the Hidden
|
||
attribute to files whose names begin with a '.'. This value
|
||
is set by the NSIS installer.
|
||
|
||
* New registry value "MaxMpxRequests" allows the maximum number
|
||
of multiplexed sessions to be configured at run time. This
|
||
value is not set by the NSIS installer. The default value is
|
||
50.
|
||
|
||
* New registry value "MaxVCPerServer" allows the maxmimum number
|
||
of VCs per server to be configured at run time. This value is
|
||
not set by the NSIS installer. The default value is 100.
|
||
|
||
* New registry value "AllSubmount" allows the "all" submount to
|
||
be disabled by setting its value to 0x00.
|
||
|
||
* Allow cells names to be valid mount points
|
||
\\<netbiosName>\<cellname>
|
||
|
||
* Store the active state of drive mappings in order for afscreds.exe
|
||
to restore them upon startup
|
||
|
||
* Add exception handling to generate a Stack Trace to the afsd_init.log
|
||
file if one happens to occur.
|
||
|
||
* Add lots of logging to help detect the cause of invalid SMB packets
|
||
|
||
* Enable Kerberos for Windows to be used to obtain AFS Tokens via
|
||
conversion of Kerberos 5 "afs" service tickets. Supports auto-
|
||
renewal of expiring tokens as long as afscreds.exe is running.
|
||
|
||
* New afscreds.exe command line options:
|
||
-A = autoinit
|
||
-M = renew drive maps
|
||
-N = ip address change detection
|
||
-Z = unmap drives
|
||
|
||
* New registry value "EnableKFW" in {HKCU,HKLM}SOFTWARE\OpenAFS\Client
|
||
determines whether or not MIT Kerberos for Windows should be used
|
||
to obtain tokens via Kerberos 5 tickets.
|
||
|
||
* New registry value "AfscredsShortcutParams" in
|
||
{HKCU,HKLM}SOFTWARE\OpenAFS\Client
|
||
determines the command line parameters to be specified when "fixing"
|
||
the AFS Shortcut in the user's startup folder.
|
||
|
||
* The "ShowTrayIcon" registry value has been moved from
|
||
HKLM\Software\TransarcCorporation\AFS Client\AfsCreds to
|
||
{HKCU,HKLM}SOFTWARE\OpenAFS\Client
|
||
|
||
* The <cell name> registry values used to store the token expiration
|
||
reminders have been moved from
|
||
HKLM\Software\TransarcCorporation\AFS Client\AfsCreds to
|
||
{HKCU,HKLM}SOFTWARE\OpenAFS\Client\Reminders
|
||
|
||
* Obtain the Logon User Name from the Explorer key when available
|
||
|
||
* new text document doc\txt\winnotes\registry.txt lists all registry
|
||
values used by OpenAFS (excluding the AFS Server)
|
||
|
||
* BUG: rx_securityClass objects were not properly reference
|
||
counted and were never freed.
|
||
|
||
* BUG: reduce the number of conditions under which CM_ERROR_TIMEOUT
|
||
would be generated. The existence of a server does not imply
|
||
that it is not down. If all of the servers for a cell are down
|
||
return CM_ERROR_NOSUCHVOLUME instead. This prevents the Explorer
|
||
Shell from hanging.
|
||
|
||
* BUG: the directory name lookup cache failed to free the entries
|
||
in the cache when the name cache entries cycled. The entries
|
||
in the cache would become dereferenced without being freed.
|
||
|
||
* BUG: fs setserverprefs could be executed without Administrator
|
||
privileges
|
||
|
||
* BUG: the number of allocated NCB objects (100) exceeded the number
|
||
which could actually be waited upon by the kernel (64). Any objects
|
||
which were utilized above the limit could never have event completions
|
||
detected.
|
||
|
||
* BUG: smb_username_t objects were not being reference counted and
|
||
were not properly freed.
|
||
|
||
* BUG: smb_tid_t objects could under unusual circumstances be freed
|
||
before they were no longer referenced.
|
||
|
||
* BUG: smb_fid_t object pointer were frequently used even when
|
||
their value could be NULL. They were not properly released and
|
||
therefore they were never freed.
|
||
|
||
* BUG: smb_packet_t data structures were not completely initialized
|
||
upon creation
|
||
|
||
* BUG: when Rx produces a CM_ERROR_NOIPC error do not return "Access
|
||
Denied" because that causes the Explorer Shell to try again until
|
||
access is obtained. Instead return "Remote Resources" which allows
|
||
the shell to move on and treat the error as transient.
|
||
|
||
* BUG: when initializing the NCBreturns structure, separate Event objects
|
||
were created for each NCB although a single Event object was supposed
|
||
to be shared by all.
|
||
|
||
* BUG: smb_dirSearch_t objects were not being properly referenced counted
|
||
or freed.
|
||
|
||
* BUG: smb_tran2Packet_t objects were not being properly referenced
|
||
counted or freed.
|
||
|
||
* BUG: directory path creation did not handle the case of multiple
|
||
directories requiring creation in one attempt
|
||
|
||
* BUG: SMB requests which required an Extended Response were ignored.
|
||
This prevented some files from being written to AFS volumes.
|
||
|
||
* BUG: character strings were being freed even after they were
|
||
inserted into in use data structures
|
||
|
||
* BUG: inconsistent usernames were used when High Security mode was
|
||
enabled. (there is still much to do in this area)
|
||
|
||
* BUG: pioctl() calls which require out of band RPC operations were
|
||
susceptible to race conditions when performed by multiple processes
|
||
|
||
* BUG: memory allocation and deallocation crossed instances of the
|
||
C Runtime Library producing memory leakage and corruption in
|
||
afscreds and the client configurator.
|
||
|
||
|
||
|