The security module "afs_dynamic_auth" can get VERY slow if trying to
authenticate against a user in a large NIS password file. This happens
because it "replaces" getpwnam with code which loops through the
"passwd" file.
this 1) makes external programs use the "real"
getpwnam, and 2) changes the internal routine afs_getpwnam_int to use
getpwnam instead of iterating.
when the callback for a directory is broken the children of this vnode
are not invalidated as well. so VerifyVCache() always believes these
vnodes to be up to date since they will still have the CStatd flag.
perhaps breaking the callback on a directory should also clear CStatd
on children vnodes?
this isnt a problem for other operating system which go through the
dnlc which does purge the children entries for the vnode in question
during ClearCallBack().
since d_revalidate now avoids the dnlc (and afs_lookup) the following
patch tracks the parent vnode's DataVersion (just the lower half really
but this should be sufficient) in d_time. if the parent has changed
then the dentry is flagged as neededing updated.
====================
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.
====================
====================
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.
====================
split for rw/ro dcaches to allow portion of cache to be dedicated
====================
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.
====================
cm_EndCallbackGrantingCall contained a race condition due to the release
of the cm_callbackLock in the middle of the for() loop. The race was
removed by optimizing out the call to cm_CallbackNotifyChange(). There
is no reason this needed to be called once per callback revoke in the
list.
here's a patch that reduces the overhead of transfers
between the local and global free packet queues. The old algorithm was
O(n) in the number of store instructions -- 7 per rx_packet. I've added
some bulk transfer macros to the rx_queue package. Now, the number of
store instructions is O(1) -- 6 total. This should help reduce bus
contention and cache line invalidates on SMPs.
provide daemon() if none exists. call it in bosserver and in afsd for afsdb handler
====================
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.
====================
I've been stress testing a patch all weekend that changes the way
thread-local packet quotas are computed. I was able to replicate the
unbounded packet alloc problem on unix server components by eliminating my
code from rxi_StartServerProcs that sets the maximum number of expected
threads. This patch makes the upper thread limit get computed on the fly,
adds some thread-local free packet queue statistics, and a few other minor
tweaks. I still don't have a working windows development environment, so
I can't say whether this will fix all the windows client problems. But,
the unbounded packet allocation problem should go away with this patch.
stress testing on windows succeeds as well. <jaltman@secure-endpoints.com>
Fix IsAfsVnode and friends for OpenBSD and NetBSD.
Use "v" instead of "vc" for vnode args to macros (cosmetic only).
Redefine OpenBSD macros instead of using #ifdefs in afs_osi.h.
Add a new function called rx_StartClientThread() which parallels the
behavior of rx_StartServer but is used for initializing client threads.
====================
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.
====================
FIXES 17805
Add a new function called rx_StartClientThread() which parallels the
behavior of rx_StartServer but is used for initializing client threads.
Also, disable RX_TSFPQ_ENABLE for Windows as it slows the client down.
Apparently the problem with multi-domain forests with cross-
realm trusts to non-Windows realms was not entirely solved.
The authentication to the AFS SMB service failed because
the wrong name was being used. Using ASU as an example,
the authentication was being performed with the name
"QAAD\user" (an account in the forest root) and not
"user@ASU.EDU (the MIT Kerberos principal used to login with)
The solution was to add an additional dependency on KFW
in order or to be able to easily obtain the client principal
name stored in the MSLSA ccache TGT. This information is
used in two locations:
- the pioctl() function
- a new WinLogon Event Handler for the "logon" event.
The pioctl function will now be able to use the correct
name when calling WNetAddConnection2() and the "logon"
event handler will now be able to call WNetAddConnection2().
The hope is that the "logon" event handler will be called
before the profile is loaded but I have not guarrantee
that will happen.
rcmds, inetd, ftpd and ntp are gone. leaving the files in the cvs head for now.
====================
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.
====================
rcmds, inetd, ftpd and ntp are gone. in 1.4, files also go away.
The attached patch turns the rx free packet queue into a 2-tiered cache
with a local thread-specific queue, backed by a global queue when using
pthreaded rx. The patch is against 1.3.79. Preliminary benchmarks show
scalability much closer to 2 cpus on sparc with this patch. Also,
fileserver performance under heavy load is improved: 50% improvement in
throughput for sequential writes, and a 10% improvement in performance for
random writes against an smp sparc solaris 10 fileserver.