[OpenAFS] Re: 1.4.2 client on RHEL5 beta 2

Stephan Wiesand Stephan.Wiesand@desy.de
Mon, 20 Nov 2006 19:13:47 +0100 (CET)


On Mon, 20 Nov 2006, Axel Thimm wrote:

> On Mon, Nov 20, 2006 at 05:32:58PM +0100, Stephan Wiesand wrote:
>> On Mon, 20 Nov 2006, Axel Thimm wrote:
>>
>>> On Mon, Nov 20, 2006 at 03:39:56PM +0100, Stephan Wiesand wrote:
>>>> Again, kind of a success report:
>>>>
>>>> The only major build problem (kernel 2.6.18-1.2747.el5) was the return of
>>>> tasklist_lock (SGI need it, et voila...) - alas, GPL-only:
>>>>
>>>>  LD [M]
>>>>  /usr/src/redhat/BUILD/openafs-1.4.2/src/libafs/MODLOAD-2.6.18-1.2747.el5-MP/libafs.o
>>>>  Building modules, stage 2.
>>>>  MODPOST
>>>> FATAL: modpost: GPL-incompatible module libafs.ko uses GPL-only symbol
>>>> 'tasklist_lock'
>>>> make[6]: *** [__modpost] Error 1
>>>
>>> I rebuilt the 1.4.2 packages for beta2 (kmdl) and didn't stumble over
>>> it (?). Does that need explicitely turning on?
>>
>> All I need to do in order to reproduce the problem on a fresh
>> installation of RHEL5 beta 2:
>>
>> tar xfj openafs-1.4.2-src.tar.bz2
>> cd openafs-1.4.2
>> ./configure
>> make
>>
>> Could you try? It's possible that the error I get is a result of
>> modifications to my system after installation. I doubt it, especially
>> since our site customization is largely unfinished at this point, but
>> please prove me wrong if you can. Here's the list of kernel related
>> packages I have installed:
>>
>> kernel-module-openafs-2.6.18-1.2747.el5-1.4.2-31.SL5.x86_64
>> kernel-devel-2.6.18-1.2747.el5.x86_64
>> kernel-headers-2.6.18-1.2747.el5.x86_64
>> kernel-2.6.18-1.2747.el5.x86_64
>>
>> The first one, of course, being my patched build. NB behaviour was the
>> same when building on beta 1 with just the new kernel-devel installed.
>>
>> And on x86 it's just the same.
>
> I tried in a clean chroot of EL5/beta2/x86_64 and the build fails at a
> completely different spot:
>
> compile_et.o: In function `yyerror':
> /var/tmp/delme/openafs-1.4.2/src/comerr/compile_et.c:419: undefined reference to `yylineno'
> compile_et.o: In function `main':
> /var/tmp/delme/openafs-1.4.2/src/comerr/compile_et.c:289: undefined reference to `yyin'
> /var/tmp/delme/openafs-1.4.2/src/comerr/compile_et.c:296: undefined reference to `yyout'
> error_table.o: In function `yyparse':
> /var/tmp/delme/openafs-1.4.2/src/comerr/y.tab.c:547: undefined reference to `yylex'
> /var/tmp/delme/openafs-1.4.2/src/comerr/y.tab.c:727: undefined reference to `yylex'
> collect2: ld returned 1 exit status
>
> Probably some parts are missing still, although flex/bison/byacc were
> on board.

No clue what's missing then.

>>>> I removed all uses of tasklist_lock, leaving only the else-branches
>>>> calling rcu_read_[un]lock in place. 1.4.2 then builds and works.
>>>>
>>>> Other observations:
>>>> - df -H shows "0.0k" on my amd64 system, and "166Y" on x86 (I now learned
>>>>   that a Yottabyte is 1k Zetabytes...)
>>>> - "umount /afs" takes unusually long, maybe 30 or 60 seconds - sometimes
>>>>
>>>> Any comments on those? (preferrably like "don't worry, that's ok" ;-) ?
>>>
>>> Could you please test the packages at http://atrpms.net/dist/el5/openafs/?
>>
>> I can do this tomorrow. But even if they work, I still have to understand
>> why they build and the plain 1.4.2 tarball does not.
>
> The packages use a couple of args more to configure, c.f.
> http://dl.atrpms.net/all/openafs.spec, e.g. it looks more like
>
> ./configure --build=i686-redhat-linux-gnu --host=i686-redhat-linux-gnu --target=i686-redhat-linux-gnu --program-prefix= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/usr/com --mandir=/usr/share/man --infodir=/usr/share/info --with-afs-sysname=i386_linux26 --with-linux-kernel-headers=/build/kernels/el5-i386/2.6.18-1.2747.el5-i686 --with-krb5-conf --enable-redhat-buildsys
> make only_libafs
>
> (cut from the logs to the i686 non-smp build). That's more or less the
> only relevant differences.

Ok, I tried to make this as similar as possible:

% rm -rf openafs-1.4.2
% tar xfj openafs-1.4.2-src.tar.bz2
% cd openafs-1.4.2
% ./configure --build=x86_64-redhat-linux-gnu 
--host=x86_64-redhat-linux-gnu 
--target=x86_64-redhat-linux-gnu --program-prefix= --prefix=/usr 
--exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc 
--datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib 
--libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/usr/com 
--mandir=/usr/share/man --infodir=/usr/share/info 
--with-afs-sysname=amd64_linux26 
--with-linux-kernel-headers=/usr/src/kernels/2.6.18-1.2747.el5-x86_64 
--with-krb5-conf --enable-redhat-buildsys
% make only_libafs >& makelog
% tail -15 makelog
   Building modules, stage 2.   MODPOST FATAL: modpost: GPL-incompatible 
module libafs.ko uses GPL-only symbol 'tasklist_lock' make[6]: *** 
[__modpost] Error 1
[...]

I don't know what you have in /build/kernels/, and hence what you're 
building against, but whatever it is: chances are it's not the same as in 
RH's kernel-devel RPM. In addition, the patch reintroducing taslist_lock, 
but GPL-only, does exist in the kernel-srpm, as does the code in the 
openafs-1.4.2 source using the symbol if it is available.

BTW, how does one do a non-smp build on EL5? There is no such kernel.

--
Stephan Wiesand
   DESY - DV -
   Platanenallee 6
   15738 Zeuthen, Germany