The function cm_SyncOp() can cause threads to wait either because there
is a state conflict on the current use of the cm_scache_t object or
a state conflict on the cm_buf_t object. Waiting is always performed
on the cm_scache_t object. However, if the conflict was with the cm_buf_t
object there was no method for waking up the thread when the conflict is
cleared. Now all of the cm_buf_t waiting functions also take a cm_scache_t
and waiting threads are woken if necessary.
cm_scache_t and cm_buf_t objects now have waitCount and waitRequest fields.
The WAITING flag is now cleared by the waking thread who sets waitCount to
zero.
Many improvements to trace logging for these issues.
FIXES 18613
you can end up hanging when you end up with multiple aliases for a single directory (dentry) as a result of @sys or multiple mountpoints.
don't end up with multiple aliases, and avoid the situation
(1) Replace all calls to getenv() with GetEnvironment(). getenv() does
not read from the real environment but instead from a copy created by
the C RTL.
(2) Add support for preserving Kerberos 5 tickets during the Integrated
Logon process. Now when Integrated Logon is used, the tickets will
be stored into the default ccache within the user session.
(3) Stress testing at MIT uncovered two code paths that could leave
threads in a permanent sleep state under heavy load. Calls to
cm_SyncOpDone were added to plug this hole.
====================
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.
====================
Install afscpcc.exe and register the KFWLogon WinLogon Event Handler
FIXES 19027
After profiling RX for a while, I've found a few more bottlenecks in the
packet handling code. This patch addresses a couple of these issues.
The major change in this patch is a new API to allow bulk packet
alloc/free ops on rx_queue's of packets. Benefits include reduced lock
contention on rx_freePktQ_lock, elimination of a lot of unnecessary cache
line invalidates, and reduced register window thrashing on sparc.
In addition, this patch dedicates one rx_packet per thread to rxi_SendAck,
since that function is in the critical path, and represents a large
percentage of execution time.
we'll finish it on a branch and remerge; 1.3.83 needs to happen and 1.4 needs to go out.
====================
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.
====================
we'll finish it on a branch and remerge; 1.3.83 needs to happen and 1.4 needs to
go out.
On at least one system it was noticed that threads waiting in rx_NewCall
would starve forever (aka deadlock). This was the result of one out of
two problems related to a race condition on the RX_CONN_MAKECALL_WAITING
bit flag. This flag was set once in rx_NewCall and cleared in rx_EndCall.
However, it was possible for the flag to be cleared even though there
were additional flags waiting in rx_NewCall. This was due to a failure
to check the value of makeCallWaiters before clearing the flag and also
due to a failure to properly lock the access to the makeCallWaiters field.
The second problem was an ability to destroy a connection on which threads
are waiting within rx_NewCall.
It has been noticed that on startup there may be corruption of the
dnlc freelist. In particular, some items on the list are actually
in use. This patch will cause the dnlc to be purged if corruption
of the freelist is detected. It also makes changes to ensure that
items placed onto the freelist are in fact cleaned to prevent confusion.
The purge function is corrected to set that magic field to the correct
value.
The validation function is fixed to not CloseHandle the same handle
twice.
fix VREFCOUNT macro for XBSD
====================
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.
====================
and everything else.