error compiling openafs client for kernel 3.4.0-25-desktop

Dear all,

I’m using an openAFS client on a machine running Tumbleweed. Whenever the kernel is updated, I have to recompile the openafs kernel modules. This worked fine until the recent upgrade to kernel 3.4.0-25-desktop. Now the compilation of libafs fails, make ends with error messages:

/usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/osi_vfsops.c:191:3:  error: implicit declaration of function ‘d_alloc_root’  -Werror=implicit-function-declaration]
/usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/osi_vfsops.c:191:16:  warning: assignment makes pointer from integer without a cast [enabled  by default]

I have no clue what to do about this (and Google did not help). I hope this is not the wrong forum to ask. Any help is highly appreciated. Thanks a lot!

best regards
Geza

PS: The last few lines preceeding the error messages were:

make[3]: Entering directory `/usr/src/linux-3.4.0-25'
/usr/src/linux-3.4.0-25/arch/x86/Makefile:96: CONFIG_X86_X32 enabled but no binutils support
( VERSION=`/usr/src/kernel-modules/openafs/libafs_tree/build-tools/git-version /usr/src/kernel-modules/openafs/libafs_tree "1.6.1pre2"` && \
echo 'char cml_version_number]="@(#) OpenAFS '$VERSION' built ' `date +"%Y-%m-%d"` '";' >/usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/AFS_component_version_number.c.NEW && \
echo 'char* AFSVersion = "openafs '$VERSION'";' >>/usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/AFS_component_version_number.c.NEW && \
if cmp /usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/AFS_component_version_number.c.NEW /usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/AFS_component_version_number.c > /dev/null 2>&1 ; then : ; else \
mv /usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/AFS_component_version_number.c.NEW /usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/AFS_component_version_number.c ; fi )
rm -f /usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/AFS_component_version_number.c.NEW
  CC [M]  /usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/AFS_component_version_number.o
  CC [M]  /usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/osi_vfsops.o
/usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/osi_vfsops.c: In function ‘afs_root’:
/usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/osi_vfsops.c:191:3: error: implicit declaration of function ‘d_alloc_root’ -Werror=implicit-function-declaration]
/usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/osi_vfsops.c:191:16: warning: assignment makes pointer from integer without a cast [enabled by default]
cc1: some warnings being treated as errors

On 05/29/2012 05:56 AM, ggiedke wrote:
>
> Dear all,
>
> I’m using an openAFS client on a machine running Tumbleweed. Whenever
> the kernel is updated, I have to recompile the openafs kernel modules.
> This worked fine until the recent upgrade to kernel 3.4.0-25-desktop.
> Now the compilation of libafs fails, make ends with error messages:
>
>
> Code:
> --------------------
> /usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/osi_vfsops.c:191:3: error: implicit declaration of function ‘d_alloc_root’ -Werror=implicit-function-declaration]
> /usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/osi_vfsops.c:191:16: warning: assignment makes pointer from integer without a cast [enabled by default]
> --------------------
>
>
> I have no clue what to do about this (and Google did not help). I hope
> this is not the wrong forum to ask. Any help is highly appreciated.
> Thanks a lot!
>
> best regards
> Geza
>
> PS: The last few lines preceeding the error messages were:
>
> Code:
> --------------------
> make[3]: Entering directory `/usr/src/linux-3.4.0-25’

/usr/src/linux-3.4.0-25/arch/x86/Makefile:96: CONFIG_X86_X32 enabled but no binutils support
( VERSION=/usr/src/kernel-modules/openafs/libafs_tree/build-tools/git-version /usr/src/kernel-modules/openafs/libafs_tree "1.6.1pre2"&&
echo ‘char cml_version_number]=“@(#) OpenAFS ‘$VERSION’ built ’ date +"%Y-%m-%d" '”;’>/usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/AFS_component_version_number.c.NEW&&
echo ‘char* AFSVersion = “openafs ‘$VERSION’”;’>>/usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/AFS_component_version_number.c.NEW&&
if cmp /usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/AFS_component_version_number.c.NEW /usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/AFS_component_version_number.c> /dev/null 2>&1 ; then : ; else
mv /usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/AFS_component_version_number.c.NEW /usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/AFS_component_version_number.c ; fi )
rm -f /usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/AFS_component_version_number.c.NEW
CC [M] /usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/AFS_component_version_number.o
CC [M] /usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/osi_vfsops.o
/usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/osi_vfsops.c: In function ‘afs_root’:
/usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/osi_vfsops.c:191:3: error: implicit declaration of function ‘d_alloc_root’ -Werror=implicit-function-declaration]
/usr/src/kernel-modules/openafs/libafs_tree/src/libafs/MODLOAD-3.4.0-25-desktop-MP/osi_vfsops.c:191:16: warning: assignment makes pointer from integer without a cast [enabled by default]
cc1: some warnings being treated as errors

Here is a hunch, it may work, it shouldn’t hurt.

Make sure kernel devel & kernel desktop devel is installed and run as
root this code, one at a time:


cd /usr/src/linux
make cloneconfig
make prepare
cd /lib/modules/`uname -r`/source/arch/x86/include/
cp -v generated/asm/unistd*.h ./asm/

I’m only guessing, but this was a workaround for the very similar
problem a fortnight/month ago for Nvidia kernel modules.

Regards
swerdna

thanks a lot for your suggestion; i tried it, but unfortunately got the same errors as before when compiling (for compiling I call

 ./configure && make 

in /usr/source/kernel-modules/openafs/libafs_tree). What was the idea behind your suggestion?

I just noticed that a new kernel version (3.4.0-25-2-desktop) was available and installed it, but compiling libafs failed with the same errors again.

I may have found a solution:

it is only the file /usr/src/kernel-modules/openafs/libafs_tree/src/afs/LINUX/osi_vfsops.c which requires d_alloc_root - although that function is no longer provided by kernel 3.4. But it only appears in an if-else statement that should not apply:


#if defined(HAVE_LINUX_D_MAKE_ROOT)
                afsp->s_root = d_make_root(ip);
#else
                afsp->s_root = d_alloc_root(ip);
#endif

So following a suggestion made in relation to a similar problem in vmware workstation 8.0.2 7.1.5 / player 4.0.2 3.1.5 fixes for linux 3.4 | Weltall’s blog
I commented out the line referring to d_alloc_root and replaced it by the one using d_make_root instead. Then the compile succeeded without errors.

Is that a bug I should report somewhere?

Thanks again for your help.

regards
Geza

Me tto use afs, but I prefere to use this:
sshfs#yourusername@server.you.use.it:/afs/domain/ /folderwheretomount fuse user,noauto,fsname=sshfs#yourusername@server.you.use.it:/afs/domain/ 0 0
in fstab, using fuse is easyer than openafs, you open a shell write mount /folderwheretomount, shell ask you a password, you can navigate in /folderwheretomount
ciao Pier