LICENSE MIT
Add two new configuration knobs to control the behavior of smb_WriteData.
HKLM\SOFTWARE\OpenAFS\Client
DWORD EnableSMBAsyncStore (default: 1)
DWORD SMBAsyncStoreSize (default: 32K)
Instead of tying the async store size to either the chunksize (too large)
or the buffer block size (too small) provide an intermediate value that
can be independently controlled.
In the future it would be desireable for the async store size to be
dynamically determined based upon measurable characteristics of the
network. In the meantime, 32KB is an acceptable performance compromise
that should work well on 1Gbit networks and low-speed cellular networks.
(cherry picked from commit f95915a55ae579bab4052f24f6fedca21d114567)
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.
(cherry picked from commit 9e41258fad54e3122a0722b3f1c24810590c8d0a)
LICENSE MIT
profiling shows large numbers of blocked calls in cm_HoldSCache
from cm_HaveAccess... We can safely avoid the call so do so.
(cherry picked from commit 812ac61cfd3601abb1373f6d3f9e4d52c2ff61b9)
LICENSE MIT
Do not leak a read lock on the bufCreateLock
Add logging to cm_CheckNTOpen[Done]
(cherry picked from commit 8bddb4892bb815076861507f8ae781ae2c3f3310)
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.
(cherry picked from commit 12c6cfd4435c5a491e613e6394fabeeed4d81447)
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.
(cherry picked from commit dcef8fa4adc4c2cdc166494979d77d91c40c1f06)
LICENSE IPL10
critical to label the database invalid when we don't truncate so recovery finishes.
issue in 84609 remains.
(cherry picked from commit d5c32c97a01f02cd69e2167964b43d83c6d413fb)
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.
(cherry picked from commit dd4ecb4ca0467d9f5727de1bfe9082f195330b99)
LICENSE MIT
The portable type to be used for sockets is osi_socket not int.
On 64-bit Windows this caused failures when hot threads were enabled.
(cherry picked from commit 5067e6786dc93b8760edf6b1b9d92c3999caea7e)
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
(cherry picked from commit 7421feda944d5fa05f5223528a69f23a7bb0b724)
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.
(cherry picked from commit 7a290f39ec303cb3473f63f7d9c634e767191279)
LICENSE IPL10
Do not grab the peer mutex or the rpc stats mutex if we are not
intending to collect stats. Doing so is a bottleneck.
(cherry picked from commit 5fd85f53f26ba1f0649b8a8c68d3abb1c5159eb9)
LICENSE MIT
if we are going to insert the full ccache name then we must search by
it as well.
(cherry picked from commit f5645ccffe05f2c1b44d5ba1adb32ba45e26aae8)
LICENSE MIT
add srvsvc and wkssvc to reserved names in smb_ShareParse.
include slash in ipc$ reference in dfs referrals check.
(cherry picked from commit 72da5c434c8caef0cb81523091915738e7e930ed)
LICENSE MIT
A sample template for constructing Network Identity Manager OpenAFS
Provider Extensions for obtaining and identifying new token types.
(cherry picked from commit 55aa6f04dcfebae134b3459944e005599d06ef05)
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.
(cherry picked from commit 38c2524bd16f1e535ea28f9d0788b7eaa8d26c3d)
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.
(cherry picked from commit 33bed6296114e16914cecf312c762774d44386c8)
LICENSE MIT
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.
(cherry picked from commit 935c49a2a6efa476c327e8a24fc4895f0c8f623d)
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.
(cherry picked from commit 093433b981cd1917215a4ee6196c5a0a55352d92)
LICENSE MIT
avoid a crash when logging VNOVOL errors returned from cm_CheckOfflineVolume
(cherry picked from commit 1133cc441862f3f0d44f0ab380a7274ead672b0f)
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.
(cherry picked from commit 00bada9c5eb803c13a6b930e79684a470cf94278)
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.
(cherry picked from commit 588a229110c92bd82b819916260ee9727759c4a0)
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.
(cherry picked from commit 44c20384ed5c0fdb4bce737a2a3c2b9c0af4472b)
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
(cherry picked from commit e9e1d1a39bfe047a38f153afdc2fe8951174135c)
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.
(cherry picked from commit a5e5736c67cdf3d08bce548447bc7635b65329c2)
LICENSE MIT
Use GetUserNameEx to obtain the username instead of searching the registry.
Try UserPrincipalName first and fallback to SamCompatible.
(cherry picked from commit 512ec8f51880d4e9e1cc5564bd27991a2c2915d6)
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.
(cherry picked from commit 7a8d8da95f5bd23fbb97d93840f3a2c5a145a695)
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
(cherry picked from commit 61bb3b7f096f3b10075dcb1403879e3ec518276b)