[PATCH] io-wq: expose IO_WQ_ACCT_* enumeration items to UAPI

Subsystems: filesystems (vfs and infrastructure), io_uring, the rest

STALE1799d

4 messages, 3 authors, 2021-09-12 · open the first message on its own page

[PATCH] io-wq: expose IO_WQ_ACCT_* enumeration items to UAPI

From: Eugene Syromiatnikov <hidden>
Date: 2021-09-12 12:24:25

These are used to index aargument of IORING_REGISTER_IOWQ_MAX_WORKERS
io_uring_register command, so they are to be exposed in UAPI.

Signed-off-by: Eugene Syromiatnikov <redacted>
---
 fs/io-wq.c                    | 7 +------
 include/uapi/linux/io_uring.h | 8 ++++++++
 2 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/fs/io-wq.c b/fs/io-wq.c
index 6c55362..5e7cd7c 100644
--- a/fs/io-wq.c
+++ b/fs/io-wq.c
@@ -14,6 +14,7 @@
 #include <linux/rculist_nulls.h>
 #include <linux/cpu.h>
 #include <linux/tracehook.h>
+#include <uapi/linux/io_uring.h>
 
 #include "io-wq.h"
 
@@ -77,12 +78,6 @@ struct io_wqe_acct {
 	unsigned long flags;
 };
 
-enum {
-	IO_WQ_ACCT_BOUND,
-	IO_WQ_ACCT_UNBOUND,
-	IO_WQ_ACCT_NR,
-};
-
 /*
  * Per-node worker thread pool
  */
diff --git a/include/uapi/linux/io_uring.h b/include/uapi/linux/io_uring.h
index 59ef351..d67a3cc 100644
--- a/include/uapi/linux/io_uring.h
+++ b/include/uapi/linux/io_uring.h
@@ -324,6 +324,14 @@ enum {
 	IORING_REGISTER_LAST
 };
 
+/* io-wq worker limit categories */
+enum {
+	IO_WQ_ACCT_BOUND,
+	IO_WQ_ACCT_UNBOUND,
+
+	IO_WQ_ACCT_NR /* Non-UAPI */
+};
+
 /* deprecated, see struct io_uring_rsrc_update */
 struct io_uring_files_update {
 	__u32 offset;
-- 
2.1.4

Re: [PATCH] io-wq: expose IO_WQ_ACCT_* enumeration items to UAPI

From: Jens Axboe <axboe@kernel.dk>
Date: 2021-09-12 18:29:49

On 9/12/21 6:24 AM, Eugene Syromiatnikov wrote:
These are used to index aargument of IORING_REGISTER_IOWQ_MAX_WORKERS
io_uring_register command, so they are to be exposed in UAPI.
Not sure that's necessary, as it's really just a boolean values - is
the worker type bounded or not. That said, not against making it
available for userspace, but definitely not IO_WQ_ACCT_NR. It
should probably just go in liburing, I guess.

-- 
Jens Axboe

Re: [PATCH] io-wq: expose IO_WQ_ACCT_* enumeration items to UAPI

From: Dmitry V. Levin <hidden>
Date: 2021-09-12 22:24:40

On Sun, Sep 12, 2021 at 12:29:41PM -0600, Jens Axboe wrote:
On 9/12/21 6:24 AM, Eugene Syromiatnikov wrote:
quoted
These are used to index aargument of IORING_REGISTER_IOWQ_MAX_WORKERS
io_uring_register command, so they are to be exposed in UAPI.
Not sure that's necessary, as it's really just a boolean values - is
the worker type bounded or not. That said, not against making it
available for userspace, but definitely not IO_WQ_ACCT_NR. It
should probably just go in liburing, I guess.
If IO_WQ_ACCT_* were just boolean values, no enum would have been
introduced in the first place.  What's the benefit of hiding
the API in the implementation, or burying it inside liburing?


-- 
ldv

Re: [PATCH] io-wq: expose IO_WQ_ACCT_* enumeration items to UAPI

From: Jens Axboe <axboe@kernel.dk>
Date: 2021-09-12 22:49:24

On 9/12/21 4:24 PM, Dmitry V. Levin wrote:
On Sun, Sep 12, 2021 at 12:29:41PM -0600, Jens Axboe wrote:
quoted
On 9/12/21 6:24 AM, Eugene Syromiatnikov wrote:
quoted
These are used to index aargument of IORING_REGISTER_IOWQ_MAX_WORKERS
io_uring_register command, so they are to be exposed in UAPI.
Not sure that's necessary, as it's really just a boolean values - is
the worker type bounded or not. That said, not against making it
available for userspace, but definitely not IO_WQ_ACCT_NR. It
should probably just go in liburing, I guess.
If IO_WQ_ACCT_* were just boolean values, no enum would have been
introduced in the first place.  What's the benefit of hiding
the API in the implementation, or burying it inside liburing?
Because it's easier to grok internally with an enum instead of
using 0/1. And you could argue that's the case too for an app,
and as I said, I'm not against making them exposed, but the _NR
part is strictly internal.

Just add separate defines or an enum in io_uring.h:

enum {
	IO_WQ_BOUND,
	IO_WQ_UNBOUND,
};

and be done with it.

-- 
Jens Axboe
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help