Linux next tag 20210219 arm and mips builds failed due to below error.
Following build configs failed arm (s3c6400_defconfig) with gcc-8 arm (s3c6400_defconfig) with gcc-9 arm (s3c6400_defconfig) with gcc-10
mips (e55_defconfig) with gcc-8 mips (e55_defconfig) with gcc-9 mips (e55_defconfig) with gcc-10
fs/io_uring.c:6171:10: error: implicit declaration of function 'io_sendmsg_prep_async'; did you mean 'io_req_prep_async'? [-Werror=implicit-function-declaration] return io_sendmsg_prep_async(req); ^~~~~~~~~~~~~~~~~~~~~ io_req_prep_async
Reported-by: Naresh Kamboju naresh.kamboju@linaro.org
Steps to reproduce: ----------------------------- # TuxMake is a command line tool and Python library that provides # portable and repeatable Linux kernel builds across a variety of # architectures, toolchains, kernel configurations, and make targets. # # TuxMake supports the concept of runtimes. # See https://docs.tuxmake.org/runtimes/, for that to work it requires # that you install podman or docker on your system. # # To install tuxmake on your system globally: # sudo pip3 install -U tuxmake # # See https://docs.tuxmake.org/ for complete documentation.
tuxmake --runtime podman --target-arch arm --toolchain gcc-10 --kconfig s3c6400_defconfig or tuxmake --runtime podman --target-arch mips --toolchain gcc-9 --kconfig e55_defconfig
On 19/02/2021 16:08, Naresh Kamboju wrote:
Linux next tag 20210219 arm and mips builds failed due to below error.
Following build configs failed arm (s3c6400_defconfig) with gcc-8 arm (s3c6400_defconfig) with gcc-9 arm (s3c6400_defconfig) with gcc-10
mips (e55_defconfig) with gcc-8 mips (e55_defconfig) with gcc-9 mips (e55_defconfig) with gcc-10
fs/io_uring.c:6171:10: error: implicit declaration of function 'io_sendmsg_prep_async'; did you mean 'io_req_prep_async'? [-Werror=implicit-function-declaration] return io_sendmsg_prep_async(req); ^~~~~~~~~~~~~~~~~~~~~ io_req_prep_async
!CONFIG_NET, I guess. Thanks for letting know
Reported-by: Naresh Kamboju naresh.kamboju@linaro.org
Steps to reproduce:
# TuxMake is a command line tool and Python library that provides # portable and repeatable Linux kernel builds across a variety of # architectures, toolchains, kernel configurations, and make targets. # # TuxMake supports the concept of runtimes. # See https://docs.tuxmake.org/runtimes/, for that to work it requires # that you install podman or docker on your system. # # To install tuxmake on your system globally: # sudo pip3 install -U tuxmake # # See https://docs.tuxmake.org/ for complete documentation.
tuxmake --runtime podman --target-arch arm --toolchain gcc-10 --kconfig s3c6400_defconfig or tuxmake --runtime podman --target-arch mips --toolchain gcc-9 --kconfig e55_defconfig
On 2/19/21 9:10 AM, Pavel Begunkov wrote:
On 19/02/2021 16:08, Naresh Kamboju wrote:
Linux next tag 20210219 arm and mips builds failed due to below error.
Following build configs failed arm (s3c6400_defconfig) with gcc-8 arm (s3c6400_defconfig) with gcc-9 arm (s3c6400_defconfig) with gcc-10
mips (e55_defconfig) with gcc-8 mips (e55_defconfig) with gcc-9 mips (e55_defconfig) with gcc-10
fs/io_uring.c:6171:10: error: implicit declaration of function 'io_sendmsg_prep_async'; did you mean 'io_req_prep_async'? [-Werror=implicit-function-declaration] return io_sendmsg_prep_async(req); ^~~~~~~~~~~~~~~~~~~~~ io_req_prep_async
!CONFIG_NET, I guess. Thanks for letting know
Yep, I'm making a cleanup for that.
On 2/19/21 9:08 AM, Naresh Kamboju wrote:
Linux next tag 20210219 arm and mips builds failed due to below error.
Following build configs failed arm (s3c6400_defconfig) with gcc-8 arm (s3c6400_defconfig) with gcc-9 arm (s3c6400_defconfig) with gcc-10
mips (e55_defconfig) with gcc-8 mips (e55_defconfig) with gcc-9 mips (e55_defconfig) with gcc-10
fs/io_uring.c:6171:10: error: implicit declaration of function 'io_sendmsg_prep_async'; did you mean 'io_req_prep_async'? [-Werror=implicit-function-declaration] return io_sendmsg_prep_async(req); ^~~~~~~~~~~~~~~~~~~~~ io_req_prep_async
Reported-by: Naresh Kamboju naresh.kamboju@linaro.org
This should fix it, cleaning it up a bit at the same time.
commit b1c892df32ebf6f30c995e23dcafeae2392ad1bc Author: Jens Axboe axboe@kernel.dk Date: Fri Feb 19 09:35:19 2021 -0700
io_uring: make the !CONFIG_NET helpers a bit more robust
With the prep and prep async split, we now have potentially 3 helpers that need to be defined for !CONFIG_NET. Add some helpers to do just that.
Fixes the following compile error on !CONFIG_NET:
fs/io_uring.c:6171:10: error: implicit declaration of function 'io_sendmsg_prep_async'; did you mean 'io_req_prep_async'? [-Werror=implicit-function-declaration] return io_sendmsg_prep_async(req); ^~~~~~~~~~~~~~~~~~~~~ io_req_prep_async
Fixes: 93642ef88434 ("io_uring: split sqe-prep and async setup") Reported-by: Naresh Kamboju naresh.kamboju@linaro.org Signed-off-by: Jens Axboe axboe@kernel.dk
diff --git a/fs/io_uring.c b/fs/io_uring.c index b7bae301744b..c9a5c498dc3b 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -5127,56 +5127,32 @@ static int io_connect(struct io_kiocb *req, unsigned int issue_flags) return 0; } #else /* !CONFIG_NET */ -static int io_sendmsg_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe) -{ - return -EOPNOTSUPP; -} - -static int io_sendmsg(struct io_kiocb *req, unsigned int issue_flags) -{ - return -EOPNOTSUPP; -} - -static int io_send(struct io_kiocb *req, unsigned int issue_flags) -{ - return -EOPNOTSUPP; -} - -static int io_recvmsg_prep(struct io_kiocb *req, - const struct io_uring_sqe *sqe) -{ - return -EOPNOTSUPP; -} - -static int io_recvmsg(struct io_kiocb *req, unsigned int issue_flags) -{ - return -EOPNOTSUPP; -} - -static int io_recv(struct io_kiocb *req, unsigned int issue_flags) -{ - return -EOPNOTSUPP; -} - -static int io_accept_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe) -{ - return -EOPNOTSUPP; -} - -static int io_accept(struct io_kiocb *req, unsigned int issue_flags) -{ - return -EOPNOTSUPP; -} - -static int io_connect_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe) -{ - return -EOPNOTSUPP; -} - -static int io_connect(struct io_kiocb *req, unsigned int issue_flags) -{ - return -EOPNOTSUPP; -} +#define IO_NETOP_FN(op) \ +static int io_##op(struct io_kiocb *req, unsigned int issue_flags) \ +{ \ + return -EOPNOTSUPP; \ +} + +#define IO_NETOP_PREP(op) \ +IO_NETOP_FN(op) \ +static int io_##op##_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe) \ +{ \ + return -EOPNOTSUPP; \ +} \ + +#define IO_NETOP_PREP_ASYNC(op) \ +IO_NETOP_PREP(op) \ +static int io_##op##_prep_async(struct io_kiocb *req) \ +{ \ + return -EOPNOTSUPP; \ +} + +IO_NETOP_PREP_ASYNC(sendmsg); +IO_NETOP_PREP_ASYNC(recvmsg); +IO_NETOP_PREP_ASYNC(connect); +IO_NETOP_PREP(accept); +IO_NETOP_FN(send); +IO_NETOP_FN(recv); #endif /* CONFIG_NET */
struct io_poll_table {