"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