[OpenAFS] Linux 2.6 support
Jeffrey Hutzelman
jhutz@cmu.edu
Tue, 08 Jun 2004 12:17:25 -0400
On Tuesday, June 08, 2004 12:01:50 -0400 Derek Atkins <warlord@MIT.EDU>
wrote:
> "chas williams (contractor)" <chas@cmf.nrl.navy.mil> writes:
>
>> In message <40C5D0CD.1080703@ics.muni.cz>,Miroslav Ruda writes:
>>> checking if kernel uses MODVERSIONS... no
>>> checking which kernel modules to build... MP SP
>>> configure: WARNING: Cannot determine sys_call_table status. assuming
>>> it isn' t exported
>>
>> configure is making the wrong guess. it hard to determine if
>> sys_call_table is exported (without examing the kernel itself).
>> for now, after running configure, modify afsconfig.h and change
>> it so that it think sys_call_table is exported.
>
> the question is: why is configure making the wrong guess?
Because it is in fact a guess, rather than a test.
In 2.4, there is no easy way to test without CONFIG_MODVERSIONS, so we have
to guess instead. We always guess the same thing -- that's what makes it a
"guess" rather than a "test".
In 2.6, there is no easy way to test, period. So just for the purpose of
configure, we pretend that CONFIG_MODVERSIONS is not defined even if it
really is. The result is that the "guess" logic is invoked. Again, we
always guess the same thing.
It used to be that we guessed that sys_call_table _was_ exported, because
if not, well, you were probably screwed (particularly, since we can't test
whether symbols are exported, there's no way to determine which variant of
the scanning code to use).
Now, that's not true any more -- you can get by without the sys_call_table
export, as long as you don't care about PAGs, because everything that used
to be done using the AFS syscall can be done instead using the new
interface.
Which brings me back to the original poster's problem. If he's really
building recent CVS against a stock 2.6.6 or newer kernel, then not having
sys_call_table exported is NOT the reason why afsd won't start -- it will
use the new interface and not even try the syscall. And in any case, it
certainly won't "hang forever" -- that implies that it's actually getting
into kernel code, since there's no substantial code in afsd itself.
It seems more likely that the problem is that we've really only ported to
2.6 _on the i386 architecture_. There are quite a variety of places where
cases have been added for i386_linux26 but not for other *_linux26. And
even once that's done, it is likely that each platform has its own special
problems to be addressed, as is usual.
-- Jeffrey T. Hutzelman (N3NHS) <jhutz+@cmu.edu>
Sr. Research Systems Programmer
School of Computer Science - Research Computing Facility
Carnegie Mellon University - Pittsburgh, PA