LICENSE MIT
make the nls module compatible with windows 2000.
cannot use LOCALE_INVARIANT instead must lie and
say everyone is US English. windows 2000 does not
have normalization functions and now doesn't have
case insensitive string comparison functions either
for languages other than English.
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
LICENSE MIT
not all applications that link to cm_nls perform initialization.
Call initialization if it has not already been done explicitly.
LICENSE MIT
Derrick helped identify a few locations where rw or mx locks where
not properly being tracked. As a result there were some locations
in which an assertion could be thrown due to releasing the wrong
type of lock.
Also added lock_AssertXXX calls to some locations to ensure that
the correct lock type is being held when the calls are made. volume
location updates, cm_SyncOp, cm_SyncOpDone.
LICENSE MIT
Return CM_ERROR_READONLY if the caller wants PRSFS_DELETE and the
volume is readonly.
In cm_CheckNTDelete() do not call cm_SyncOpDone if cm_SyncOp failed
Do not force the use of fake directory data if the user does not
have PRSFS_READ on the directory. Let the bulkstatus call take
place now that it is actually being used efficiently.
In ApplyV3SearchDirPatches, use cm_SyncOp(CM_SCACHESYNC_GETSTATUS)
to obtain the status info for Freelance entries instead of the
bulkstatus call.
Fix the truncation of 8.3 names in directory search responses.
LICENSE MIT
Do not permit GetAccessRights() to be called multiple times within
cm_SyncOp for the same rights check. If the GetAccessRights() succeeded
and in the next loop the rights check fails, the user simply doesn't
have the rights.
Move a call to cm_SyncOpDone(FETCHSTATUS) from GetBuffer() to MergeStatus().
Anytime an RPC completes successfully we get updated status info for
the object. Might as well allow threads waiting for status info to us
it.
LICENSE MIT
Apply the bulk stat improvements to smb_ApplyDirListPatches() and
smb_ReceiveCoreSearchDir() for consistency even though
smb_ReceiveCoreSearchDir() is no longer called by any of the platforms
we support.
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
LICENSE MIT
Only return 50 items at a time to the caller.
Do not apply patches based on buffer boundaries. Instead
apply patches when AFSCBMAX entries are ready to be processed
in order to minimize the number of RPCs.
LICENSE MIT
minimize the number of RPCs sent to the file server. 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 but
not so much that it exceeds the RDR timeout
LICENSE MIT
define DEBUG_SMB_REFCOUNT in smb.h to activate refcount debugging
versions of the functions that log the file and line number as
well as object and refcount. This is for use in debugging refcount
leaks.
rename GetPacket and GetNCB to smb_GetPacket and smb_GetNCB, etc.,
to enforce the name space. Do not confuse with similar Win32 API
functions.
restructure some code that refers to smb_vc_t references in order
to clarify where the refcount is dropped.
LICENSE MIT
deltas windows-smb-dead-vc-gc-20080627 and
windows-dead-vc-cleanup-take-two-20080703 attempted to
protect against an infinite recursion when cleaning up
dead smb virtual circuits. they failed to address the
incrementing of the vc refcount in smb_ReleaseVCInternal
when it is about to call smb_CleanupDeadVC. If the vc
is already being cleaned, then smb_ReleaseVCInternal
should not increment the refCount and should not call
smb_CleanupDeadVC.
(This commit was committed incorrectly to the 1-5
branch first. delta name on the head was modified
to avoid the delta name collision.)
LICENSE MIT
validate the specified volume to make sure it exists before permitting
the mount point to be created. This will catch many instances in which
the user swaps the parameters to "fs mkmount".
LICENSE MIT
When recycling cm_volume_t objects, avoid a race condition that could
result in the same cm_volume_t object being recycling simultaneously
in two threads. The end result would be a reference count miscount
and an undercount assertion being thrown.
LICENSE MIT
When an error such as access denied, out of space, out of quota,
invalid fid, etc. is received while writing a dirty buffer to the
file server, apply that error code to all outstanding dirty buffers
immediately instead of attempting to write each buffer to the file
server only to obtain the same error.
LICENSE MIT
as part of the restructuring of code to separate the smb layer
from the cm layer, large file support was broken. Define AFS_LARGEFILES
in the right place so that it will be used in the cm.
LICENSE IPL10
FIXES 107767
avoid corrupting length in vnodeds when salvaging directories.
avoid tag reuse leaving data behind (not verified)
avoid not marking something busy during salvage
LICENSE MIT
The ioctl-prefix-data can be accessed either via a char_t or a wchar_t.
Copy the data buffer with memcpy() and not strcpy() because we need to
copy the entire string if it happens to be Unicode.
LICENSE MIT
The NSIS installer was building a msi for the vc runtime that included
the Debug merge modules when the Retail merge modules should have been
used instead.
LICENSE MIT
Everytime the CM_BUF_DIRTY flag is set on a cm_buf_t, the userp field
on the cm_buf_t must also be set. Add a cm_user_t parameter to buf_SetDirty()
so that each function that calls it doesn't have to manually set the
last write user. This improves code readability and the abstraction layering.
LICENSE MIT
Extend the cm_MakeDir() function signature to permit the (optional)
return of the cm_scache_t object that was created by the operation
in the same way that cm_Create() does.
Make the return of the cm_scache_t by cm_Create() optional although
it is never used that way.
In both cm_Create() and cm_MakeDir() avoid releasing the cm_scache_t
object until we are actually finished with it.
LICENSE MIT
Add smb_InitReq() calls cm_InitReq() and then sets the new
CM_REQ_SOURCE_SMB flag. When this flag is set, the source of the
request is known to be the SMB interface. This flag will not be
set on requests generated by the various background daemons.
LICENSE MIT
When updating the volume location information, if a new server must
be allocated and the server is down, then it is possible for a deadlock
to occur on the cm_volume_t rw lock. Prevent that from happening.
LICENSE MIT
convert additional 'connp' instances to 'rxconnp'
in cm_volume.c, make sure that we hold a reference to the rxconnp
whenever we use it to perform an RPC.
LICENSE MIT
There has been long time confusion in the windows cache manager because
there are cm_conn object ptrs call connp and rx_connection object ptrs
call connp and rx_call object ptrs called callp and rx_connection object
ptrs called callp.
From now on, rxconnp is a ptr to an rx_connection object;
rxcallp is a ptr to an rx_call object; and connp is a ptr to an
cm_conn object.
LICENSE MIT
During cm_InitVolume() clear CM_VOLUMEFLAG_UPDATING_VL if we are reusing
the cache data just in case.
In cm_UpdateVolumeLocation() add trace logging to the sleeping, waking,
and awaking states; move the destruction of the old server list into
the region protected by the CM_VOLUMEFLAG_UPDATING_VL flag.