Package: openafs-modules-dkms
Version: 1.8.6-5
Severity: normal
X-Debbugs-Cc: [email protected]
I am pretty sure this is know issue (I was expiriencing it for probably 2
years or more), but I didn't found any open issues to track this problem.
...
checking whether kmap_atomic takes no km_type argument... no
...
...
Building in directory: MODLOAD-5.10.0-4-rt-amd64-SP
make[2]: Entering directory
'/var/lib/dkms/openafs/1.8.6/build/src/libafs/MODLOAD-5.10.0-4-rt-amd64-SP'
...
...
CC [M]
/var/lib/dkms/openafs/1.8.6/build/src/libafs/MODLOAD-5.10.0-4-rt-amd64-SP/afs_bypasscache.o
/var/lib/dkms/openafs/1.8.6/build/src/libafs/MODLOAD-5.10.0-4-rt-amd64-SP/afs_bypasscache.c:
In function ‘afs_bypass_copy_page’:
/var/lib/dkms/openafs/1.8.6/build/src/libafs/MODLOAD-5.10.0-4-rt-amd64-SP/afs_bypasscache.c:311:31:
error: ‘KM_USER0’ undeclared (first use in this function)
311 | address = kmap_atomic(pp, KM_USER0);
| ^~~~~~~~
/var/lib/dkms/openafs/1.8.6/build/src/libafs/MODLOAD-5.10.0-4-rt-amd64-SP/afs_bypasscache.c:311:31:
note: each undeclared identifier is reported only once for each function it
appears in
/var/lib/dkms/openafs/1.8.6/build/src/libafs/MODLOAD-5.10.0-4-rt-amd64-SP/afs_bypasscache.c:311:15:
error: too many arguments to function ‘kmap_atomic’
311 | address = kmap_atomic(pp, KM_USER0);
| ^~~~~~~~~~~
In file included from
/usr/src/linux-headers-5.10.0-4-common-rt/include/linux/highmem.h:14,
from
/usr/src/linux-headers-5.10.0-4-common-rt/include/linux/pagemap.h:11,
from
/usr/src/linux-headers-5.10.0-4-common-rt/include/linux/blkdev.h:14,
from
/usr/src/linux-headers-5.10.0-4-common-rt/include/linux/backing-dev.h:15,
from
/var/lib/dkms/openafs/1.8.6/build/src/afs/sysincludes.h:126,
from
/var/lib/dkms/openafs/1.8.6/build/src/afs/afs_bypasscache.h:67,
from
/var/lib/dkms/openafs/1.8.6/build/src/libafs/MODLOAD-5.10.0-4-rt-amd64-SP/afs_bypasscache.c:64:
/usr/src/linux-headers-5.10.0-4-common-rt/include/linux/highmem-internal.h:179:21:
note: declared here
179 | static inline void *kmap_atomic(struct page *page)
| ^~~~~~~~~~~
/var/lib/dkms/openafs/1.8.6/build/src/libafs/MODLOAD-5.10.0-4-rt-amd64-SP/afs_bypasscache.c:321:36:
error: macro "kunmap_atomic" passed 2 arguments, but takes just 1
321 | kunmap_atomic(address, KM_USER0);
| ^
In file included from
/usr/src/linux-headers-5.10.0-4-common-rt/include/linux/highmem.h:14,
from
/usr/src/linux-headers-5.10.0-4-common-rt/include/linux/pagemap.h:11,
from
/usr/src/linux-headers-5.10.0-4-common-rt/include/linux/blkdev.h:14,
from
/usr/src/linux-headers-5.10.0-4-common-rt/include/linux/backing-dev.h:15,
from
/var/lib/dkms/openafs/1.8.6/build/src/afs/sysincludes.h:126,
from
/var/lib/dkms/openafs/1.8.6/build/src/afs/afs_bypasscache.h:67,
from
/var/lib/dkms/openafs/1.8.6/build/src/libafs/MODLOAD-5.10.0-4-rt-amd64-SP/afs_bypasscache.c:64:
/usr/src/linux-headers-5.10.0-4-common-rt/include/linux/highmem-internal.h:210:
note: macro "kunmap_atomic" defined here
210 | #define kunmap_atomic(__addr) \
|
/var/lib/dkms/openafs/1.8.6/build/src/libafs/MODLOAD-5.10.0-4-rt-amd64-SP/afs_bypasscache.c:321:5:
error: ‘kunmap_atomic’ undeclared (first use in this function); did you mean
‘kmap_atomic’?
321 | kunmap_atomic(address, KM_USER0);
| ^~~~~~~~~~~~~
| kmap_atomic
make[5]: ***
[/usr/src/linux-headers-5.10.0-4-common-rt/scripts/Makefile.build:284:
/var/lib/dkms/openafs/1.8.6/build/src/libafs/MODLOAD-5.10.0-4-rt-amd64-SP/afs_bypasscache.o]
Error 1
make[4]: *** [/usr/src/linux-headers-5.10.0-4-common-rt/Makefile:1813:
/var/lib/dkms/openafs/1.8.6/build/src/libafs/MODLOAD-5.10.0-4-rt-amd64-SP]
Error 2
make[3]: *** [/usr/src/linux-headers-5.10.0-4-common-rt/Makefile:185:
__sub-make] Error 2
make[3]: Leaving directory '/usr/src/linux-headers-5.10.0-4-rt-amd64'
FAILURE: make exit code 2
make[2]: *** [Makefile.afs:279: openafs.ko] Error 1
make[2]: Leaving directory
'/var/lib/dkms/openafs/1.8.6/build/src/libafs/MODLOAD-5.10.0-4-rt-amd64-SP'
make[1]: *** [Makefile:186: linux_compdirs] Error 2
make[1]: Leaving directory '/var/lib/dkms/openafs/1.8.6/build/src/libafs'
make: *** [Makefile:15: all] Error 2
The upstream code, as well the one shipped in Debian -dkms package, does
have provisions to detect this issue, and work, but it doesn't. Here is a
relevant part:
#if !defined(UKERNEL)
# if defined(KMAP_ATOMIC_TAKES_NO_KM_TYPE)
address = kmap_atomic(pp);
# else
address = kmap_atomic(pp, KM_USER0);
# endif
#else
address = pp;
#endif
memcpy(address + pageoff, (char *)(rxiov[iovno].iov_base) + iovoff, dolen);
#if !defined(UKERNEL)
# if defined(KMAP_ATOMIC_TAKES_NO_KM_TYPE)
kunmap_atomic(address);
# else
kunmap_atomic(address, KM_USER0);
# endif
#endif
The kmap_atomic signature depends if the kernel is compiled with HIGHMEM
support AFAIK, which is commonly disabled on RT kernels for various
reasons.
No sure, why the KMAP_ATOMIC_TAKES_NO_KM_TYPE is defined, as the
configure should detect this problem.
Upstream m4 macros for this are here:
http://git.openafs.org/?p=openafs.git;a=blob;f=src/cf/linux-test4.m4;h=f7699cec31ce23399294adfde2c72f6196c6a105;hb=HEAD#l714
The generated configure distributed with openafs-modules-dkms does look
to have code related to this too, so I am not sure why it doesn't
compile, when it should.
It is easy to reproduce, just install the -rt kernel packages (and
headers), no need to boot it.
Regards,
Witold
-- System Information:
Debian Release: bullseye/sid
APT prefers testing-debug
APT policy: (500, 'testing-debug'), (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 5.10.0-3-amd64 (SMP w/32 CPU threads)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_DIE, TAINT_OOT_MODULE,
TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages openafs-modules-dkms depends on:
ii dkms 2.8.4-2
ii libc6-dev 2.31-9
ii perl 5.32.1-3
Versions of packages openafs-modules-dkms recommends:
ii openafs-client 1.8.6-5
openafs-modules-dkms suggests no packages.
-- no debconf information