* [PATCH liburing v1 0/4] liburing updates for 2.4
@ 2023-01-12 15:57 Ammar Faizi
2023-01-12 15:57 ` [PATCH liburing v1 1/4] liburing-ffi.map: Add io_uring_prep_msg_ring_cqe_flags() function Ammar Faizi
` (4 more replies)
0 siblings, 5 replies; 8+ messages in thread
From: Ammar Faizi @ 2023-01-12 15:57 UTC (permalink / raw)
To: Jens Axboe
Cc: Ammar Faizi, Pavel Begunkov, Breno Leitao, Christian Mazakas,
Gilang Fachrezy, VNLX Kernel Department, io-uring Mailing List,
Linux Kernel Mailing List, GNU/Weeb Mailing List
From: Ammar Faizi <[email protected]>
Hi Jens,
I have found two people confused about the io_uring_prep_splice()
function, especially on the offset part. The current manpage for
io_uring_prep_splice() doesn't tell about the rules of the offset
arguments.
Despite these rules are already noted in "man 2 io_uring_enter",
people who want to know about this prep function will prefer to read
"man 3 io_uring_prep_splice". Let's explain it there.
Additionally, this series also contains:
- Fix a typo: 's/is adjust/is adjusted/' and indentation in
liburing.h.
- Add io_uring_prep_msg_ring_cqe_flags() to liburing-ffi.map.
Commit 27180d7be059 ("Add io_uring_prep_msg_ring_cqe_flags
function") adds a new inline function in liburing.h, but it doesn't
update the liburing-ffi.map file. Update it.
- Note about --nolibc configure option deprecation in the CHANGELOG.
Since commit bfb432f4cce5 ("configure: Always enable `CONFIG_NOLIBC`
if the arch is supported"), the --nolibc configure option is
deprecated and has no effect. Plus, building liburing on x86-64,
x86, and aarch64 always enables CONFIG_NOLIBC. Note these changes
in the CHANGELOG file.
Signed-off-by: Ammar Faizi <[email protected]>
---
Ammar Faizi (4):
liburing-ffi.map: Add io_uring_prep_msg_ring_cqe_flags() function
CHANGELOG: Note about --nolibc configure option deprecation
liburing.h: 's/is adjust/is adjusted/' and fix indentation
man/io_uring_prep_splice.3: Explain more about io_uring_prep_splice()
CHANGELOG | 2 ++
man/io_uring_prep_splice.3 | 38 ++++++++++++++++++++++++++++++++++++++
src/include/liburing.h | 4 ++--
src/liburing-ffi.map | 1 +
4 files changed, 43 insertions(+), 2 deletions(-)
base-commit: 47679a9019e48bf4293a4f55adade9eae715f9e4
--
Ammar Faizi
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH liburing v1 1/4] liburing-ffi.map: Add io_uring_prep_msg_ring_cqe_flags() function
2023-01-12 15:57 [PATCH liburing v1 0/4] liburing updates for 2.4 Ammar Faizi
@ 2023-01-12 15:57 ` Ammar Faizi
2023-01-12 15:57 ` [PATCH liburing v1 2/4] CHANGELOG: Note about --nolibc configure option deprecation Ammar Faizi
` (3 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Ammar Faizi @ 2023-01-12 15:57 UTC (permalink / raw)
To: Jens Axboe
Cc: Ammar Faizi, Pavel Begunkov, Breno Leitao, Christian Mazakas,
Gilang Fachrezy, VNLX Kernel Department, io-uring Mailing List,
Linux Kernel Mailing List, GNU/Weeb Mailing List
From: Ammar Faizi <[email protected]>
Commit 27180d7be059 ("Add io_uring_prep_msg_ring_cqe_flags function")
adds a new inline function in liburing.h, but it doesn't update the
liburing-ffi.map file. Update it.
Cc: Breno Leitao <[email protected]>
Cc: Christian Mazakas <[email protected]>
Fixes: 27180d7be059 ("Add io_uring_prep_msg_ring_cqe_flags function")
Signed-off-by: Ammar Faizi <[email protected]>
---
src/liburing-ffi.map | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/liburing-ffi.map b/src/liburing-ffi.map
index 8dd4641..1a6df50 100644
--- a/src/liburing-ffi.map
+++ b/src/liburing-ffi.map
@@ -164,6 +164,7 @@ LIBURING_2.4 {
io_uring_register_restrictions;
io_uring_prep_write;
io_uring_prep_recv;
+ io_uring_prep_msg_ring_cqe_flags;
local:
*;
};
--
Ammar Faizi
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH liburing v1 2/4] CHANGELOG: Note about --nolibc configure option deprecation
2023-01-12 15:57 [PATCH liburing v1 0/4] liburing updates for 2.4 Ammar Faizi
2023-01-12 15:57 ` [PATCH liburing v1 1/4] liburing-ffi.map: Add io_uring_prep_msg_ring_cqe_flags() function Ammar Faizi
@ 2023-01-12 15:57 ` Ammar Faizi
2023-01-12 15:57 ` [PATCH liburing v1 3/4] liburing.h: 's/is adjust/is adjusted/' and fix indentation Ammar Faizi
` (2 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Ammar Faizi @ 2023-01-12 15:57 UTC (permalink / raw)
To: Jens Axboe
Cc: Ammar Faizi, Pavel Begunkov, Breno Leitao, Christian Mazakas,
Gilang Fachrezy, VNLX Kernel Department, io-uring Mailing List,
Linux Kernel Mailing List, GNU/Weeb Mailing List
From: Ammar Faizi <[email protected]>
Since commit bfb432f4cce5 ("configure: Always enable `CONFIG_NOLIBC` if
the arch is supported"), the --nolibc configure option is deprecated
and has no effect. Plus, building liburing on x86-64, x86, and aarch64
always enables CONFIG_NOLIBC. Note these changes in the CHANGELOG file.
Signed-off-by: Ammar Faizi <[email protected]>
---
CHANGELOG | 2 ++
1 file changed, 2 insertions(+)
diff --git a/CHANGELOG b/CHANGELOG
index 93c500f..0722aae 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -4,6 +4,8 @@ liburing-2.4 release
- Add IO_URING_{MAJOR,MINOR,CHECK}_VERSION() macros.
- FFI support (for non-C/C++ languages integration).
- Add io_uring_prep_msg_ring_cqe_flags() function.
+- Deprecate --nolibc configure option.
+- CONFIG_NOLIBC is always enabled on x86-64, x86, and aarch64.
liburing-2.3 release
--
Ammar Faizi
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH liburing v1 3/4] liburing.h: 's/is adjust/is adjusted/' and fix indentation
2023-01-12 15:57 [PATCH liburing v1 0/4] liburing updates for 2.4 Ammar Faizi
2023-01-12 15:57 ` [PATCH liburing v1 1/4] liburing-ffi.map: Add io_uring_prep_msg_ring_cqe_flags() function Ammar Faizi
2023-01-12 15:57 ` [PATCH liburing v1 2/4] CHANGELOG: Note about --nolibc configure option deprecation Ammar Faizi
@ 2023-01-12 15:57 ` Ammar Faizi
2023-01-12 15:57 ` [PATCH liburing v1 4/4] man/io_uring_prep_splice.3: Explain more about io_uring_prep_splice() Ammar Faizi
2023-01-12 17:49 ` [PATCH liburing v1 0/4] liburing updates for 2.4 Jens Axboe
4 siblings, 0 replies; 8+ messages in thread
From: Ammar Faizi @ 2023-01-12 15:57 UTC (permalink / raw)
To: Jens Axboe
Cc: Ammar Faizi, Pavel Begunkov, Breno Leitao, Christian Mazakas,
Gilang Fachrezy, VNLX Kernel Department, io-uring Mailing List,
Linux Kernel Mailing List, GNU/Weeb Mailing List
From: Ammar Faizi <[email protected]>
- Fix a typo: 's/is adjust/is adjusted/'.
- Fix indentation.
Signed-off-by: Ammar Faizi <[email protected]>
---
src/include/liburing.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/include/liburing.h b/src/include/liburing.h
index cc3677e..c7139ef 100644
--- a/src/include/liburing.h
+++ b/src/include/liburing.h
@@ -388,8 +388,8 @@ IOURINGINLINE void io_uring_prep_rw(int op, struct io_uring_sqe *sqe, int fd,
* @param off_in If fd_in refers to a pipe, off_in must be (int64_t) -1;
* If fd_in does not refer to a pipe and off_in is (int64_t) -1,
* then bytes are read from fd_in starting from the file offset
- * and it is adjust appropriately;
- * If fd_in does not refer to a pipe and off_in is not
+ * and it is adjusted appropriately;
+ * If fd_in does not refer to a pipe and off_in is not
* (int64_t) -1, then the starting offset of fd_in will be
* off_in.
* @param off_out The description of off_in also applied to off_out.
--
Ammar Faizi
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH liburing v1 4/4] man/io_uring_prep_splice.3: Explain more about io_uring_prep_splice()
2023-01-12 15:57 [PATCH liburing v1 0/4] liburing updates for 2.4 Ammar Faizi
` (2 preceding siblings ...)
2023-01-12 15:57 ` [PATCH liburing v1 3/4] liburing.h: 's/is adjust/is adjusted/' and fix indentation Ammar Faizi
@ 2023-01-12 15:57 ` Ammar Faizi
2023-01-12 17:26 ` Gabriel Krisman Bertazi
2023-01-12 17:49 ` [PATCH liburing v1 0/4] liburing updates for 2.4 Jens Axboe
4 siblings, 1 reply; 8+ messages in thread
From: Ammar Faizi @ 2023-01-12 15:57 UTC (permalink / raw)
To: Jens Axboe
Cc: Ammar Faizi, Pavel Begunkov, Breno Leitao, Christian Mazakas,
Gilang Fachrezy, VNLX Kernel Department, io-uring Mailing List,
Linux Kernel Mailing List, GNU/Weeb Mailing List
From: Ammar Faizi <[email protected]>
I have found two people confused about the io_uring_prep_splice()
function, especially on the offset part. The current manpage for
io_uring_prep_splice() doesn't tell about the rules of the offset
arguments.
Despite these rules are already noted in "man 2 io_uring_enter",
people who want to know about this prep function will prefer to read
"man 3 io_uring_prep_splice".
Let's explain it there!
Signed-off-by: Ammar Faizi <[email protected]>
---
Stolen from liburing comment (with some modifications):
If `fd_in` refers to a pipe, `off_in` must be -1.
If `fd_in` does not refer to a pipe and `off_in` is -1, then bytes are
read from `fd_in` starting from the file offset and it is adjusted
appropriately.
If `fd_in` does not refer to a pipe and `off_in` is not -1, then the
starting offset of `fd_in` will be `off_in`.
The same rules apply to `fd_out` and `off_out`.
Note that even if `fd_in` or `fd_out` refers to a pipe, the splice
operation can still failed with `EINVAL` if one of the fd doesn't
explicitly support splice operation, e.g. reading from terminal is
unsupported from kernel 5.7 to 5.11.
man/io_uring_prep_splice.3 | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/man/io_uring_prep_splice.3 b/man/io_uring_prep_splice.3
index cb82ad0..a177bc6 100644
--- a/man/io_uring_prep_splice.3
+++ b/man/io_uring_prep_splice.3
@@ -52,6 +52,34 @@ and
.I fd_in
given as a registered file descriptor offset.
+If
+.I fd_in
+refers to a pipe,
+.IR off_in
+must be -1.
+
+If
+.I fd_in
+does not refer to a pipe and
+.I off_in
+is -1, then bytes are read from
+.I fd_in
+starting from the file offset and it is adjusted appropriately.
+
+If
+.I fd_in
+does not refer to a pipe and
+.I off_in
+is not -1, then the starting offset of
+.I fd_in
+will be
+.IR off_in .
+
+The same rules apply to
+.I fd_out
+and
+.IR off_out .
+
This function prepares an async
.BR splice (2)
request. See that man page for details.
@@ -78,3 +106,13 @@ field.
.BR io_uring_submit (3),
.BR io_uring_register (2),
.BR splice (2)
+
+.SH NOTES
+Note that even if
+.I fd_in
+or
+.I fd_out
+refers to a pipe, the splice operation can still failed with
+.B EINVAL
+if one of the fd doesn't explicitly support splice operation, e.g. reading from
+terminal is unsupported from kernel 5.7 to 5.11.
--
Ammar Faizi
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH liburing v1 4/4] man/io_uring_prep_splice.3: Explain more about io_uring_prep_splice()
2023-01-12 15:57 ` [PATCH liburing v1 4/4] man/io_uring_prep_splice.3: Explain more about io_uring_prep_splice() Ammar Faizi
@ 2023-01-12 17:26 ` Gabriel Krisman Bertazi
2023-01-12 17:49 ` Jens Axboe
0 siblings, 1 reply; 8+ messages in thread
From: Gabriel Krisman Bertazi @ 2023-01-12 17:26 UTC (permalink / raw)
To: Ammar Faizi
Cc: Jens Axboe, Pavel Begunkov, Breno Leitao, Christian Mazakas,
Gilang Fachrezy, VNLX Kernel Department, io-uring Mailing List,
Linux Kernel Mailing List, GNU/Weeb Mailing List
Ammar Faizi <[email protected]> writes:
> From: Ammar Faizi <[email protected]>
>
> I have found two people confused about the io_uring_prep_splice()
> function, especially on the offset part. The current manpage for
> io_uring_prep_splice() doesn't tell about the rules of the offset
> arguments.
>
> Despite these rules are already noted in "man 2 io_uring_enter",
> people who want to know about this prep function will prefer to read
> "man 3 io_uring_prep_splice".
>
> Let's explain it there!
Hi Ammar,
A few suggestions below:
> --- a/man/io_uring_prep_splice.3
> +++ b/man/io_uring_prep_splice.3
> @@ -52,6 +52,34 @@ and
> .I fd_in
> given as a registered file descriptor offset.
>
> +If
> +.I fd_in
> +refers to a pipe,
> +.IR off_in
> +must be -1.
Maybe
"off_in is ignored and must be set to -1."
> +
> +If
> +.I fd_in
> +does not refer to a pipe and
> +.I off_in
> +is -1, then bytes are read from
bytes -> nbytes ?
> +.I fd_in
> +starting from the file offset and it is adjusted appropriately.
What do you think:
starting from the file offset, which is incremented by the number of
bytes read.
> +If
> +.I fd_in
> +does not refer to a pipe and
> +.I off_in
> +is not -1, then the starting offset of
> +.I fd_in
> +will be
> +.IR off_in .
> +
> +The same rules apply to
> +.I fd_out
> +and
> +.IR off_out .
> +
> This function prepares an async
> .BR splice (2)
> request. See that man page for details.
> @@ -78,3 +106,13 @@ field.
> .BR io_uring_submit (3),
> .BR io_uring_register (2),
> .BR splice (2)
> +
> +.SH NOTES
> +Note that even if
> +.I fd_in
> +or
> +.I fd_out
> +refers to a pipe, the splice operation can still failed with
failed -> fail
Thanks,
--
Gabriel Krisman Bertazi
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH liburing v1 4/4] man/io_uring_prep_splice.3: Explain more about io_uring_prep_splice()
2023-01-12 17:26 ` Gabriel Krisman Bertazi
@ 2023-01-12 17:49 ` Jens Axboe
0 siblings, 0 replies; 8+ messages in thread
From: Jens Axboe @ 2023-01-12 17:49 UTC (permalink / raw)
To: Gabriel Krisman Bertazi, Ammar Faizi
Cc: Pavel Begunkov, Breno Leitao, Christian Mazakas, Gilang Fachrezy,
VNLX Kernel Department, io-uring Mailing List,
Linux Kernel Mailing List, GNU/Weeb Mailing List
On 1/12/23 10:26 AM, Gabriel Krisman Bertazi wrote:
> Ammar Faizi <[email protected]> writes:
>
>> From: Ammar Faizi <[email protected]>
>>
>> I have found two people confused about the io_uring_prep_splice()
>> function, especially on the offset part. The current manpage for
>> io_uring_prep_splice() doesn't tell about the rules of the offset
>> arguments.
>>
>> Despite these rules are already noted in "man 2 io_uring_enter",
>> people who want to know about this prep function will prefer to read
>> "man 3 io_uring_prep_splice".
>>
>> Let's explain it there!
>
> Hi Ammar,
>
> A few suggestions below:
[snip]
Shoot, missed this. Ammar, can you send a fixup patch with the below
suggestions?
--
Jens Axboe
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH liburing v1 0/4] liburing updates for 2.4
2023-01-12 15:57 [PATCH liburing v1 0/4] liburing updates for 2.4 Ammar Faizi
` (3 preceding siblings ...)
2023-01-12 15:57 ` [PATCH liburing v1 4/4] man/io_uring_prep_splice.3: Explain more about io_uring_prep_splice() Ammar Faizi
@ 2023-01-12 17:49 ` Jens Axboe
4 siblings, 0 replies; 8+ messages in thread
From: Jens Axboe @ 2023-01-12 17:49 UTC (permalink / raw)
To: Ammar Faizi
Cc: Pavel Begunkov, Breno Leitao, Christian Mazakas, Gilang Fachrezy,
VNLX Kernel Department, io-uring Mailing List,
Linux Kernel Mailing List, GNU/Weeb Mailing List
On Thu, 12 Jan 2023 22:57:05 +0700, Ammar Faizi wrote:
> I have found two people confused about the io_uring_prep_splice()
> function, especially on the offset part. The current manpage for
> io_uring_prep_splice() doesn't tell about the rules of the offset
> arguments.
>
> Despite these rules are already noted in "man 2 io_uring_enter",
> people who want to know about this prep function will prefer to read
> "man 3 io_uring_prep_splice". Let's explain it there.
>
> [...]
Applied, thanks!
[1/4] liburing-ffi.map: Add io_uring_prep_msg_ring_cqe_flags() function
commit: 390b4f6a1314f8b1c51ced51c70b8646a51ad081
[2/4] CHANGELOG: Note about --nolibc configure option deprecation
commit: 68c2a983819edae4e724b49b2e644767684eb103
[3/4] liburing.h: 's/is adjust/is adjusted/' and fix indentation
commit: f63a594cbc58bb0f680e7d424f2d8f836142aa35
[4/4] man/io_uring_prep_splice.3: Explain more about io_uring_prep_splice()
commit: 55bbe5b71c7d39c9ea44e5abb886846010c67baa
Best regards,
--
Jens Axboe
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-01-12 18:20 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-01-12 15:57 [PATCH liburing v1 0/4] liburing updates for 2.4 Ammar Faizi
2023-01-12 15:57 ` [PATCH liburing v1 1/4] liburing-ffi.map: Add io_uring_prep_msg_ring_cqe_flags() function Ammar Faizi
2023-01-12 15:57 ` [PATCH liburing v1 2/4] CHANGELOG: Note about --nolibc configure option deprecation Ammar Faizi
2023-01-12 15:57 ` [PATCH liburing v1 3/4] liburing.h: 's/is adjust/is adjusted/' and fix indentation Ammar Faizi
2023-01-12 15:57 ` [PATCH liburing v1 4/4] man/io_uring_prep_splice.3: Explain more about io_uring_prep_splice() Ammar Faizi
2023-01-12 17:26 ` Gabriel Krisman Bertazi
2023-01-12 17:49 ` Jens Axboe
2023-01-12 17:49 ` [PATCH liburing v1 0/4] liburing updates for 2.4 Jens Axboe
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox