On Mon, Apr 28, 2025 at 06:14:18PM -0700, Caleb Sander Mateos wrote:
On Mon, Apr 28, 2025 at 4:11 PM Uday Shankar ushankar@purestorage.com wrote:
Building kublk currently fails (with a "could not find linux/ublk_cmd.h" error message) if kernel headers are not installed in a system-global location (i.e. somewhere in the compiler's default include search path). This failure is unnecessary, as make kselftest installs kernel headers in the build tree - kublk's build just isn't looking for them properly. There is an include path in kublk's CFLAGS which is probably intended to find the kernel headers installed in the build tree; fix it so that it can actually find them.
This introduces some macro redefinition issues between glibc-provided headers and kernel headers; fix those by eliminating one include in kublk.
I'm curious what symbol was redefined. struct iovec? Anyways,
The RWF_* flags. Here's an example error:
In file included from /root/linux/tools/testing/selftests/../../../usr/include/linux/io_uring.h:11, from kublk.h:25, from kublk.c:6: /root/linux/tools/testing/selftests/../../../usr/include/linux/fs.h:318: error: "RWF_HIPRI" redefined [-Werror] 318 | #define RWF_HIPRI ((__kernel_rwf_t)0x00000001) | In file included from /usr/include/sys/uio.h:179, from kublk.h:22, from kublk.c:6: /usr/include/bits/uio-ext.h:45: note: this is the location of the previous definition 45 | #define RWF_HIPRI 0x00000001 /* High priority request. */ |