"I have found a "nice" bug in namei_ops.c:
In GetFreeTag() the following code was used to find a free place in the
link table entry:
/* Now find a free column in this row and claim it. */
coldata = 0x7;
for (col = 0; col<NAMEI_MAXVOLS; col++) {
coldata <<= col * 3;
if ((row & coldata) == 0)
break;
}
What happens?
With col == 0 we look for the bits 0x7. This is ok.
With col == 1 we look for the bits 0x38. This is also ok.
With col == 2 we look for the bits 0xe00 instead of 0x1c0 !!!
But later the allocation is done correctly with 0x40.
Thus the next time he will find again a free place for col == 2 !
For higher values of col the test is also incorrect, of course."
"This is an addition for MR-AFS log files where the thread
name is shown. rx switches the general server threads to listeners and
vice versa. To have reasonable names the listener must get back his old
name when converting himself to a server thread. To not bother other
programs with unresolved references I do this with two function pointers
which are initialized in the main() programs for MR-AFS."
====================
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.
====================
use function pointers here instead of threadname
If compiled without AFS_NAMEI_ENV existence
of AFSIDat must stop us. If compiled with AFS_NAMEI_ENV volume headers
in a partition, but no AFSIDat must stop us.
"In the original version the path name in the box showing the network
drives were wrong if a part of the name after afs had only 3 characters:
afs\ipp\u became afs\u. Also the small hooks in front of the names
disappeared immediately."
"Under 2.4.x kernels, there is a file type in the result of readdir to
help applications optimize directory traversal. With usfficiently new
libc compiled against sufficiently new kernel headers, this is exported to
applications.
Several applications, including fileutils use this information. AFS
asserts that all files are directories. This sucks, because among
other things it causes rm -rf not to work."
Makefile.am and configure.in first cuts. not yet useful
====================
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.
====================
oops; this belongs on the branch created for autoconf development
in the same way members of system:administrators have all pts powers,
members of system:ptsviewers have all pts read powers by virtue of
said membership
use uint64_t in preference to u_int64_t as solaris has only the latter and
linux appears to have both. also, use lockf where flock was used in the
solaris case
setup for darwin port
====================
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.
====================
changes for darwin port
====================
added files for the darwin port
====================
changes for darwin port
" rx: attempt to fix incorrect rtt computation, possibly winning
on performance for links with some packet loss.
Currently, the rtt is computed as the time from the transmission
of a packet until the receipt of the corresponding ack packet.
But this includes a potential delay (rx_{soft,hard,last}AckDelay)
on the client which results in an abnormally high rtt, and even
more erroneous rtt_dev and retransmit timeout values.
The proposed solution is to ignore RX_ACK_DELAY type ack packets
for the purposes of rtt computations, and introduce another ack
packet type for RX_ACK_DELAY-type acks which are sent immediately
by the client.
This should of course be backwards-compatible with existing clients.
"
Changes for Alpha to previous 64 bit changes for sparc (sparc64 isn't
necessarily analogous to alpha or any other 64 bit linux platform)
====================
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.
====================
use mkstemp
====================
Include necessary file for alpha config
====================
Deal with 64 bit time_t
====================
Don't do increments in a way that can be miscompiled
====================
configure for alpha linux
====================
deal with time and initialize a variable
====================
don't use ViceIoctl32 for alpha linux
====================
deal with compiling kdump for alpha linux
====================
mods in callback.c analogous to dux port; mods in viced to deal with
thread creation function return convention
====================
config for linux alpha
====================
ids for alpha linux consistent with new-style sysname grouping
====================
makefile and config files for new-style sysnames
====================
MakefileProto changes for alpha linux with new-style sysnames. A change
in config/mc.c will be needed for this to configure correctly, and it will
be added soon
====================
note alpha port and the state it's in to hopefully avoid questions