All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] mini-liburing updates
@ 2026-01-20 21:11 Pavel Begunkov
  2026-01-20 21:11 ` [PATCH 1/2] selftests/io_uring: add io_uring_queue_init_params Pavel Begunkov
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Pavel Begunkov @ 2026-01-20 21:11 UTC (permalink / raw)
  To: io-uring; +Cc: asml.silence, axboe

Update mini-liburing with NO_SQARRAY and io_uring_queue_init_params()
support. Sending these separately to get rid of dependencies, but
they're also nice to have while writing selftests.

Pavel Begunkov (2):
  selftests/io_uring: add io_uring_queue_init_params
  selftests/io_uring: support NO_SQARRAY in miniliburing

 tools/include/io_uring/mini_liburing.h | 59 +++++++++++++++++++-------
 1 file changed, 44 insertions(+), 15 deletions(-)

-- 
2.52.0


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] selftests/io_uring: add io_uring_queue_init_params
  2026-01-20 21:11 [PATCH 0/2] mini-liburing updates Pavel Begunkov
@ 2026-01-20 21:11 ` Pavel Begunkov
  2026-01-20 21:11 ` [PATCH 2/2] selftests/io_uring: support NO_SQARRAY in miniliburing Pavel Begunkov
  2026-01-21 14:55 ` [PATCH 0/2] mini-liburing updates Jens Axboe
  2 siblings, 0 replies; 4+ messages in thread
From: Pavel Begunkov @ 2026-01-20 21:11 UTC (permalink / raw)
  To: io-uring; +Cc: asml.silence, axboe

Add a ring init variant taking struct io_uring_params, which mimicks
liburing API.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
---
 tools/include/io_uring/mini_liburing.h | 25 +++++++++++++++++--------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/tools/include/io_uring/mini_liburing.h b/tools/include/io_uring/mini_liburing.h
index 9ccb16074eb5..a55407b09dbb 100644
--- a/tools/include/io_uring/mini_liburing.h
+++ b/tools/include/io_uring/mini_liburing.h
@@ -126,21 +126,18 @@ static inline int io_uring_enter(int fd, unsigned int to_submit,
 		       flags, sig, _NSIG / 8);
 }
 
-static inline int io_uring_queue_init(unsigned int entries,
-				      struct io_uring *ring,
-				      unsigned int flags)
+static inline int io_uring_queue_init_params(unsigned int entries,
+					     struct io_uring *ring,
+					     struct io_uring_params *p)
 {
-	struct io_uring_params p;
 	int fd, ret;
 
 	memset(ring, 0, sizeof(*ring));
-	memset(&p, 0, sizeof(p));
-	p.flags = flags;
 
-	fd = io_uring_setup(entries, &p);
+	fd = io_uring_setup(entries, p);
 	if (fd < 0)
 		return fd;
-	ret = io_uring_mmap(fd, &p, &ring->sq, &ring->cq);
+	ret = io_uring_mmap(fd, p, &ring->sq, &ring->cq);
 	if (!ret)
 		ring->ring_fd = fd;
 	else
@@ -148,6 +145,18 @@ static inline int io_uring_queue_init(unsigned int entries,
 	return ret;
 }
 
+static inline int io_uring_queue_init(unsigned int entries,
+				      struct io_uring *ring,
+				      unsigned int flags)
+{
+	struct io_uring_params p;
+
+	memset(&p, 0, sizeof(p));
+	p.flags = flags;
+
+	return io_uring_queue_init_params(entries, ring, &p);
+}
+
 /* Get a sqe */
 static inline struct io_uring_sqe *io_uring_get_sqe(struct io_uring *ring)
 {
-- 
2.52.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] selftests/io_uring: support NO_SQARRAY in miniliburing
  2026-01-20 21:11 [PATCH 0/2] mini-liburing updates Pavel Begunkov
  2026-01-20 21:11 ` [PATCH 1/2] selftests/io_uring: add io_uring_queue_init_params Pavel Begunkov
@ 2026-01-20 21:11 ` Pavel Begunkov
  2026-01-21 14:55 ` [PATCH 0/2] mini-liburing updates Jens Axboe
  2 siblings, 0 replies; 4+ messages in thread
From: Pavel Begunkov @ 2026-01-20 21:11 UTC (permalink / raw)
  To: io-uring; +Cc: asml.silence, axboe

Add support for IORING_SETUP_NO_SQARRAY in miniliburing.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
---
 tools/include/io_uring/mini_liburing.h | 34 ++++++++++++++++++++------
 1 file changed, 27 insertions(+), 7 deletions(-)

diff --git a/tools/include/io_uring/mini_liburing.h b/tools/include/io_uring/mini_liburing.h
index a55407b09dbb..44be4446feda 100644
--- a/tools/include/io_uring/mini_liburing.h
+++ b/tools/include/io_uring/mini_liburing.h
@@ -6,6 +6,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/uio.h>
 
 struct io_sq_ring {
 	unsigned int *head;
@@ -55,6 +56,7 @@ struct io_uring {
 	struct io_uring_sq sq;
 	struct io_uring_cq cq;
 	int ring_fd;
+	unsigned flags;
 };
 
 #if defined(__x86_64) || defined(__i386__)
@@ -72,7 +74,14 @@ static inline int io_uring_mmap(int fd, struct io_uring_params *p,
 	void *ptr;
 	int ret;
 
-	sq->ring_sz = p->sq_off.array + p->sq_entries * sizeof(unsigned int);
+	if (p->flags & IORING_SETUP_NO_SQARRAY) {
+		sq->ring_sz = p->cq_off.cqes;
+		sq->ring_sz += p->cq_entries * sizeof(struct io_uring_cqe);
+	} else {
+		sq->ring_sz = p->sq_off.array;
+		sq->ring_sz += p->sq_entries * sizeof(unsigned int);
+	}
+
 	ptr = mmap(0, sq->ring_sz, PROT_READ | PROT_WRITE,
 		   MAP_SHARED | MAP_POPULATE, fd, IORING_OFF_SQ_RING);
 	if (ptr == MAP_FAILED)
@@ -83,7 +92,8 @@ static inline int io_uring_mmap(int fd, struct io_uring_params *p,
 	sq->kring_entries = ptr + p->sq_off.ring_entries;
 	sq->kflags = ptr + p->sq_off.flags;
 	sq->kdropped = ptr + p->sq_off.dropped;
-	sq->array = ptr + p->sq_off.array;
+	if (!(p->flags & IORING_SETUP_NO_SQARRAY))
+		sq->array = ptr + p->sq_off.array;
 
 	size = p->sq_entries * sizeof(struct io_uring_sqe);
 	sq->sqes = mmap(0, size, PROT_READ | PROT_WRITE,
@@ -138,10 +148,12 @@ static inline int io_uring_queue_init_params(unsigned int entries,
 	if (fd < 0)
 		return fd;
 	ret = io_uring_mmap(fd, p, &ring->sq, &ring->cq);
-	if (!ret)
+	if (!ret) {
 		ring->ring_fd = fd;
-	else
+		ring->flags = p->flags;
+	} else {
 		close(fd);
+	}
 	return ret;
 }
 
@@ -208,10 +220,18 @@ static inline int io_uring_submit(struct io_uring *ring)
 
 	ktail = *sq->ktail;
 	to_submit = sq->sqe_tail - sq->sqe_head;
-	for (submitted = 0; submitted < to_submit; submitted++) {
-		read_barrier();
-		sq->array[ktail++ & mask] = sq->sqe_head++ & mask;
+
+	if (!(ring->flags & IORING_SETUP_NO_SQARRAY)) {
+		for (submitted = 0; submitted < to_submit; submitted++) {
+			read_barrier();
+			sq->array[ktail++ & mask] = sq->sqe_head++ & mask;
+		}
+	} else {
+		ktail += to_submit;
+		sq->sqe_head += to_submit;
+		submitted = to_submit;
 	}
+
 	if (!submitted)
 		return 0;
 
-- 
2.52.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 0/2] mini-liburing updates
  2026-01-20 21:11 [PATCH 0/2] mini-liburing updates Pavel Begunkov
  2026-01-20 21:11 ` [PATCH 1/2] selftests/io_uring: add io_uring_queue_init_params Pavel Begunkov
  2026-01-20 21:11 ` [PATCH 2/2] selftests/io_uring: support NO_SQARRAY in miniliburing Pavel Begunkov
@ 2026-01-21 14:55 ` Jens Axboe
  2 siblings, 0 replies; 4+ messages in thread
From: Jens Axboe @ 2026-01-21 14:55 UTC (permalink / raw)
  To: io-uring, Pavel Begunkov


On Tue, 20 Jan 2026 21:11:43 +0000, Pavel Begunkov wrote:
> Update mini-liburing with NO_SQARRAY and io_uring_queue_init_params()
> support. Sending these separately to get rid of dependencies, but
> they're also nice to have while writing selftests.
> 
> Pavel Begunkov (2):
>   selftests/io_uring: add io_uring_queue_init_params
>   selftests/io_uring: support NO_SQARRAY in miniliburing
> 
> [...]

Applied, thanks!

[1/2] selftests/io_uring: add io_uring_queue_init_params
      commit: 73061dbeca783aaf311e1af9610f8cba1c1176cd
[2/2] selftests/io_uring: support NO_SQARRAY in miniliburing
      commit: 145e0074392587606aa5df353d0e761f0b8357d5

Best regards,
-- 
Jens Axboe




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-01-21 14:55 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-20 21:11 [PATCH 0/2] mini-liburing updates Pavel Begunkov
2026-01-20 21:11 ` [PATCH 1/2] selftests/io_uring: add io_uring_queue_init_params Pavel Begunkov
2026-01-20 21:11 ` [PATCH 2/2] selftests/io_uring: support NO_SQARRAY in miniliburing Pavel Begunkov
2026-01-21 14:55 ` [PATCH 0/2] mini-liburing updates 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.