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.
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:
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