Update text files for 1.3.71 and describe the new Windows Authorization
Group "AFS Client Admins"
====================
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.
====================
Add support for "AFS Client Admins" windows authortization group
- Support administrative installations ( 'msiexec /a openafs-en_US.msi')
- Register services as interactive
- Move product code into NTMakefile.i386_nt40
====================
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.
====================
- It resolves all IP addresses to names unless the "-numeric"
parameter is used.
This is the same behavior as "fs listcells [-numeric]"
- If the "-numeric" parameter is used, IP address will be printed
in dotted decimal form instead of a 8 digit hex string.
- A new parameter "-long" allows to print all information for all
entries in the log.
This is the same info you get for entry XYZ when called with
"-key XYZ" only you get this for _all_ keys.
The output is slow if not also called together with "-numeric
Noone seems to be using this code anyway, as it's been non-compilable
for 2 years now. But indent noticed that we have too many close-parens
in there, so might as well fix it...
Add trailing semicolons to _LOCK and _UNLOCK macros and re-indent.
This should've been in fix-indent-bug-with-lock-macros-20030729
but somehow it slipped by and I've only found it now.
time values in the cache manager and smb engine which are passed to
the run time library must be of type time_t and not long or int or
unsigned long or unsigned int or ...
When the callback expires on an scache item, if there is an smb client
listening for updates send it is a notification of change. This will
force the smb client to refresh its listener which will in turn cause
a new callback to be registered.
Also, remove debugging statements from GetServer/PutServer
* 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.
Restore the installation of afslogon.dll as a winlogon event handler.
Microsoft identified the problem as being a newly added restriction
on the behavior of DllMain entry points. Network operations such
as bind() may no longer be called. The ICF blocks them but does not
cause an error to be returned.
The XP SP2 problem was caused by attempting to call bind() from
within DllMain which is no longer permitted. Added a new function
AfsLogonInit() which is called from every entry point to ensure
that the necessary initializaton is performed.
Cleaned up the prior fix to smb3.c to better test the invalid
conditions.
====================
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.
====================
unget configure scripts ready for 1.3.70. not what i meant to do
document new freelance functionality and update install notes
====================
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.
====================
Freeing the cm_serverRef_t has proved to be a challenge to get it right.
We now pass a pointer to a pointer to the first object in the list to
the function. We must be very careful to not destroy the list as we walk
the contents of the list with the extra level of indirection. On the
other hand, when we are freeing members of the list which have reached
a refCount of zero, we must be sure to maintain the fiction of the extra
level of indirection.
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.
smb3.c: Fake the timestamp if we can't stat the file. A zero FILETIME
value causes problems.
====================
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.
====================
On Windows XP SP2, when a Kerberos principal is used for login and the
KDC is not reachable, Windows will return a DOWNGRADE_DETECTED error
when attempting to open the ioctl file. This is because NTLM will not
be permitted when there is the potential of an attack. There is a hack
to get around this. Manually create a CIFS connection to the AFS client
service while specifying the current user's name. This will use the cached
password and allow the downgrade to NTLM.
If the backup hosts file can't be deleted, try changing attribtues
first, and failing that try to come up with a unique name for the
backup instead of failing.
if there's a callback connection to a multihomed client, you need this
or you end up with multiple connections, one per IP, being made from
the single connection
Increase max chunksize to 128K from 32K. Windows uses 64K SMB writes.
The large chunksize helps reduce the overlapped write to afs issue.
Increase number of server threads from 4 to 25. Also helps to aleviate
the symptoms of the overlapped write to afs issue. I can now write files
as large as 80MB. 120MB files still fail.
Export pr_CreateUser and pr_SNameToId from afsauthent.lib in order to
allow aklog.exe to use them to determine if a new pts uid should be
created for a user when accessing a foreign cell.
Modify pioctl to output a message to stderr if a Downgrade Detection error
has been returned when attempting to open the __IOCTL__ file.
Increase version number to 1.3.6601
Use HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer:Logon User Name
to determine the current user name for the afscreds.exe display
Do not allow submount names to have forward or backward slashes
Add debug info to cm_ioctl to track token addition and deletion
Add register new user code to aklog.exe from KenH's AFS kit
Correct test in cm_callback.c for freelance root.afs volume which
should not have been applied when freelance was not active.
Move most log entries to the osi trace log from the afsd_init.log
Add log entries to help diagnose the lost callback problem
Fix a variety of type errors in header files and casts
More fixes for cm_Analyze. Do not allow a retry to be performed
if the timeLeft on the call has expired. Forcing a retry resets the
timeout period causing the call to never expire. The side effect is
that the SMB sessions never close. When the Windows SMB client times
out it will create a new session at a rate of one per 66 seconds. This
causes the SMB session limit to be exceeded and we panic.
Modify the SMB Session limit to be four less then the number of SMB
NCBs. This is because the server itself uses 4 NCBs which are not associated
with sessions.
As discovered previously, the cm_serverRef_t objects were not reference
counted. This resulted in the objects being freed while they were
still in use. This patch adds reference counting to the cm_serverRef_t
objects which are locked using the cm_serverLock.
Once the reference counting was fixed it became immediately obvious
that cm_VolumeUpdates could not succeed in altering the state of a
server list from ALLOFFLINE to NOTBUSY. cm_VolumeUpdate calls cm_Analyze
without a fid_t object which was required to obtain the server list for
the affected volume. Of course, cm_VolumeUpdate has a pointer to the
volume so cm_Analyze was updated to take an optional pointer to a
cm_serverRef_t which avoids the need for the fid_t object.
Undo the previous patch. the server list can't be cloned.
instead we will have to refCount the cm_serverRef_t objects.
This is going to be a lot of work. To be continued ...
This is a variation of Joe Buehler's request.
New registry key "NonPersistentCache" places the cache file into the
Windows paging file. One limitation of doing so is that the page file
cannot be grown with "fs setcachesize" and the associated ioctl.
There was a race condition where between a thread calling cm_GetServerList and using the returned server list, another
thread could free the server list. Now cm_GetServerList duplicates the server list with proper locks held. Callers of
cm_GetServerList call cm_FreeServerList to free the returned list.