All of lore.kernel.org
 help / color / mirror / Atom feed
* [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 <ammarfaizi2@gnuweeb.org>

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 <ammarfaizi2@gnuweeb.org>
---

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 <ammarfaizi2@gnuweeb.org>

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 <leitao@debian.org>
Cc: Christian Mazakas <christian.mazakas@gmail.com>
Fixes: 27180d7be059 ("Add io_uring_prep_msg_ring_cqe_flags function")
Signed-off-by: Ammar Faizi <ammarfaizi2@gnuweeb.org>
---
 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 <ammarfaizi2@gnuweeb.org>

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 <ammarfaizi2@gnuweeb.org>
---
 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 <ammarfaizi2@gnuweeb.org>

  - Fix a typo: 's/is adjust/is adjusted/'.

  - Fix indentation.

Signed-off-by: Ammar Faizi <ammarfaizi2@gnuweeb.org>
---
 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 <ammarfaizi2@gnuweeb.org>

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 <ammarfaizi2@gnuweeb.org>
---

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 <ammarfaizi2@gnuweeb.org> writes:

> From: Ammar Faizi <ammarfaizi2@gnuweeb.org>
>
> 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 <ammarfaizi2@gnuweeb.org> writes:
> 
>> From: Ammar Faizi <ammarfaizi2@gnuweeb.org>
>>
>> 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.