LICENSE MIT
An implementation of Asanka's idea.
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.
LICENSE MIT
Improve parallelism by using InterlockedIncrement and InterlockedDecrement
to adjust the refCount fields of cm_buf_t and cm_scache_t objects. This
permits read locks to be used for increments and decrements but requires
a write-lock to perform any actions based upon the refCount hitting zero.
Inline cm_FidCmp to further improve performance.
Remove unused variables.
LICENSE MIT
1. Change RxEnableHotThread default to 'on'
2. Add a 'hash' value to the cm_fid_t structure in order to speed up cm_FidCmp().
Add cm_SetFid() for use in constructing a fid complete with the hash.
3. Redefine the BUF_HASH and BUF_FILEHASH in terms of the cm_fid_t hash which
has a better distribution
4. 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.
5. 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
6. 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.
7. CM_SCACHESYNC_ASYNCSTORE should not be ordered by cm_SyncOpCheckContinue
8. Avoid calls to multi_Rx if nconns == 0
9. Modify smb_WriteData to perform background writes based upon the crossing
of buf_blockSize 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.
LICENSE MIT
Add RxEnableHotThread registry option to permit rx_enable_hot_thread
to be set. The default is off for the moment but turning it on does
provide significant performance benefits.
LICENSE IPL10
my code, though, this is a result of a problem reported by Chaskiel Grundman and analysis by him, Jeff Altman and myself.
I'm just checking in my implementation. In any case, the issue this addresses
is one where we can end up in makecall_waiting in rx on multiple connections
when we multibreakcallback because the lists are sorted differently and each has "pending" calls on a different connection. by sorting by index we will not
block on another caller while also holding what they're after
LICENSE MIT
The RXKADBADTICKET error is returned when a krb5 derived token is sent
to a server that does not support them. In a mixed cell it is possible
that some servers were not updated. Discarding the token does not make
it possible to perform the request successfully and adversely affects
the user experience because those servers that do support the token
can no longer be accessed in an authenticated manner. Users can't
determine what the cause is, all they see are their tokens disappearing
and there is nothing they can do about it anyway.
From now on return STATUS_NO_KERB_KEY and do not retry.
LICENSE MIT
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.
LICENSE MIT
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.
LICENSE MIT
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.
LICENSE MIT
When osi_Log is disabled, osi_LogSaveString will no longer copy the
provided string into the circular log buffer. This saves a huge amount
of time.
LICENSE MIT
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.
LICENSE MIT
Add "ipc$" to the list of names that must not be automatically added
as a share name.
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
to the requestor.
LICENSE MIT
Warnings as errors are nice, but when different compiler versions
stop building simply because a parameter is not being referenced
in a meaningful way its time for the option to be turned off
LICENSE MIT
Remove all references to rpcns4.lib and its included functions RpcNsXXX.
These APIs are no longer supported on Vista. Except for TaAfsAdmSvr
they had been commented out for a long time but we still continued to
link to the library. Loading the library generates a no longer supported
error on Vista. So lets get rid of it.
LICENSE MIT
FIXES 82701
Modifying the registry and the startup shortcuts is not permitted under
Vista UAC. Generate an error dialog and notify the end user.
LICENSE MIT
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
LICENSE MIT
Enable the 32-bit tools that are distributed for use in the WOW64 environment
to access the 64-bit registry keys instead of the 32-bit versions. This
will remove the need to support both 64-bit and 32-bit versions of the
values.
LICENSE MIT
Add support for returning RANGE_NOT_LOCKED errors
Do not attempt to add a mount point for share names of the form
<cell><mount-type><volume>. Its just a big waste of time. DNS
queries and CellServDB file searches are expensive.