This patch makes sure that in-kernel aliases to non-existant names aren't
accidentally created due to case mismatch (e.g. "athena" being created as
a symlink to "athena.MIT.EDU", while "athena.mit.edu" is the real cell
that already exists). It also lowercases cell names in AFSDB lookups,
otherwise the same problem appears in userspace (eg "aklog athena" tries
to obtain tokens for cell "athena.MIT.EDU").
"My theory of what happened is roughly as follows:
Process tries to read data from AFS (as part of a page fault);
issues a new Rx call on an Rx connection to the fileserver.
The server transmits some data back to the client, but some packet
is lost.
Something tries to garbage-collect/destroy the connection; since
there is an active call, it can't do so, but issues an rx_AckAll
anyway, which acknowledges all packets transmitted by the server
as having been received. Server flushes its retransmit queue.
Client waits forever for the lost packet to arrive, but since the
server has already flushed the transmit queue, it cannot possibly
retransmit it.
All this is happening while the client has read-locked its address
space (since the read is part of a page fault). /proc accesses that
try to poke into that processes address space hang waiting for said
lock, causing the lossage we actually observed."
"This fix deals with the following lose case:
Client starts a call that, for some reason, takes a long time on the
server. While the client waits for the server to finish, client and
server usually send each other keep alive packets. If something
causes those packets to be delayed or dropped, then the client will
conclude that the call has failed or finished (usually failed), while
the server is still *busy* doing the call.
In this circumstance, the client will initiate another call and the
server will correctly respond that it is busy. Unfortunately, if the
callNumber of a received packet doesn't match the callNumber of the
outstanding call, then the client never sees that the server says it's
busy. Instead the server appears as a black hole to the client.
This fix ensures that the client sees the busy packets when its
callNumber is reasonably out of sync with the server."
This patch fixes a resource starvation condition in Rx. The
problem arises, for instance, when more than 4 daemons try to
prefetch chunks of the same file at once. The fifth daemon is
stuck in MAKECALL_WAITING state, never getting a chance to run,
because the other 4 daemons never yield to the scheduler after
releasing the call, and just grab the call back again.
Currently it's possible to give StoreData negative Pos/Length/FileLength
arguments and thereby set the volume quota usage to arbitrary values.
This patch makes these values unsigned, since negative file positions
and lengths don't make sense anyway.
no reason server etcdir needs to be forced world readable; nothing need
default to those cellconfig files except in the localauth case and then
you need to be able to read the KeyFile anyway
afs_RemoveCellEntry holds afs_xcell; setserverprefs modified the same
structure but did not which was problematic if something changed out from under
it
this caused a call to pdflush to happen at the wrong time, which should fix
the zero filled files problem, the osi_assert(cred) problem and the
execsorwriters == 0 warnings to go away
if you're not using ufs logging it's ok to replace solaris fsck with vfsck,
except sometimes it exits with 40 and that's not a failure to the solaris
scripts.
Currently nothing clears the CLIENTDELETED flag in hosts, so once
a client has been deleted, h_TossStuff_r() will keep getting called
with every host release. This patch clears the CLIENTDELETED flag
every time we take care of deleted clients.
"apparently the rev 1 r5000 chips implement 'cvt' incorrectly. the irix
kernel works around this problem by checking each text page mapped into
memory and doing a fixup on the cvt instructions. it tries to maintain
a hash of these pages using fid2() or fid() if fid2() returns ENOSYS.
afs, in an effort to prevent people from doing checkpoints on an afs
filesystem, makes fid2() return EINVAL. this also keeps the kernel from
mapping executables that are in afs space on the broken r5000's.
this is the patch i have been using for the past couple years while
waiting for an official fix. it makes fid2() return ENOSYS, so you
now need to have to have v_ckpt. however i disabled the rest of the
CKPT code since i have no idea how well that code actually works.
additionally, this behavior is only functional on machines with the
'broken' r5000 h/w. i cant think of a better way to fix this problem
since i cant change the irix kernel."
====================
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.
====================
according to jeff:
- Renames the top-level 'install' target to 'build'. This should be
transparent, since no one should be using that.
- Improves on Sam's dirpath patches, by splitting out server binaries
into separate bin, sbin, and libexec directories in GCS mode (these
are all /usr/afs/bin in Transarc mode).
- Updates the top-level 'all' target so that it builds the software
but does not generate a dest tree. Top-level 'lib' and 'include'
directories are generated to hold the intermediate libraries and headers
used during the build.
- Adds a new top-level 'install' target, which installs things in the
appropriate directories under ${DESTDIR}, based on configure's install
directories plus the extras added by Sam's patch.
- Adds a new top-level 'dest' target, which creates an old-style dest
directory under ${DEST}. The ${DEST} variable defaults to the
traditional value of ${SRCDIR_PARENT}/${SYS_NAME}/dest. Note that
this variable used to be called ${DESTDIR}; it was renamed to avoid
conflicts with the de facto standard usage of ${DESTDIR}.
====================
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.
====================
fix missed makefile
====================
update another missed file
====================
eliminate bogus escaping
====================
get rid of another bogus escape
====================
remove unused include directory
====================
get rid of no longer used libdir
====================
remove unused incdir
====================
fix up some problems for make compatibility and missing trailing /
====================
put afs.exp in the right place
====================
remove bogus afssrvdir reference
====================
update dest version of output
====================
update ref to libexecdir
====================
kill refs to afssrvdir
====================
convert missed LIBDIR to TOP_LIBDIR
====================
remove explicit INSTALL and use makefile.@sys value instead
====================
except it's helpful to actually include makefile.@sys