Recent changes (master)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The following changes since commit 6a193ce90a4d8958d5000809dd8e3286e8215d0f:

  t/io_uring: add symbolic defines for NOP flags (2024-11-04 10:27:06 -0700)

are available in the Git repository at:

  git://git.kernel.dk/fio.git master

for you to fetch changes up to f2415d711a11fec6d5e4081a7bdc060b98c76043:

  t/io_uring: fix size confusion in allocate_mem() (2024-11-05 07:57:41 -0700)

----------------------------------------------------------------
Jens Axboe (3):
      engines/io_uring: don't mess with non power-of-2 queue depth
      Merge branch 'io_uring-depth'
      t/io_uring: fix size confusion in allocate_mem()

 engines/io_uring.c | 23 ++++++++++++++---------
 t/io_uring.c       |  2 +-
 2 files changed, 15 insertions(+), 10 deletions(-)

---

Diff of recent changes:

diff --git a/engines/io_uring.c b/engines/io_uring.c
index 60b4f653..79eacbc4 100644
--- a/engines/io_uring.c
+++ b/engines/io_uring.c
@@ -770,7 +770,8 @@ static enum fio_q_status fio_ioring_queue(struct thread_data *td,
 
 	fio_ro_check(td, io_u);
 
-	if (ld->queued == ld->iodepth)
+	/* should not hit... */
+	if (ld->queued == td->o.iodepth)
 		return FIO_Q_BUSY;
 
 	/* if async trim has been tried and failed, punt to sync */
@@ -1006,7 +1007,7 @@ static int fio_ioring_queue_init(struct thread_data *td)
 {
 	struct ioring_data *ld = td->io_ops_data;
 	struct ioring_options *o = td->eo;
-	int depth = td->o.iodepth;
+	int depth = ld->iodepth;
 	struct io_uring_params p;
 	int ret;
 
@@ -1086,7 +1087,7 @@ static int fio_ioring_cmd_queue_init(struct thread_data *td)
 {
 	struct ioring_data *ld = td->io_ops_data;
 	struct ioring_options *o = td->eo;
-	int depth = td->o.iodepth;
+	int depth = ld->iodepth;
 	struct io_uring_params p;
 	int ret;
 
@@ -1231,7 +1232,7 @@ static int fio_ioring_post_init(struct thread_data *td)
 		return 1;
 	}
 
-	for (i = 0; i < td->o.iodepth; i++) {
+	for (i = 0; i < ld->iodepth; i++) {
 		struct io_uring_sqe *sqe;
 
 		sqe = &ld->sqes[i];
@@ -1272,7 +1273,7 @@ static int fio_ioring_cmd_post_init(struct thread_data *td)
 		return 1;
 	}
 
-	for (i = 0; i < td->o.iodepth; i++) {
+	for (i = 0; i < ld->iodepth; i++) {
 		struct io_uring_sqe *sqe;
 
 		if (o->cmd_type == FIO_URING_CMD_NVME) {
@@ -1330,9 +1331,13 @@ static int fio_ioring_init(struct thread_data *td)
 
 	ld = calloc(1, sizeof(*ld));
 
-	/* ring depth must be a power-of-2 */
-	ld->iodepth = td->o.iodepth;
-	td->o.iodepth = roundup_pow2(td->o.iodepth);
+	/*
+	 * The internal io_uring queue depth must be a power-of-2, as that's
+	 * how the ring interface works. So round that up, in case the user
+	 * set iodepth isn't a power-of-2. Leave the fio depth the same, as
+	 * not to be driving too much of an iodepth, if we did round up.
+	 */
+	ld->iodepth = roundup_pow2(td->o.iodepth);
 
 	/* io_u index */
 	ld->io_u_index = calloc(td->o.iodepth, sizeof(struct io_u *));
@@ -1362,7 +1367,7 @@ static int fio_ioring_init(struct thread_data *td)
 	}
 	parse_prchk_flags(o);
 
-	ld->iovecs = calloc(td->o.iodepth, sizeof(struct iovec));
+	ld->iovecs = calloc(ld->iodepth, sizeof(struct iovec));
 
 	td->io_ops_data = ld;
 
diff --git a/t/io_uring.c b/t/io_uring.c
index dec9552b..eea5fe0a 100644
--- a/t/io_uring.c
+++ b/t/io_uring.c
@@ -1006,7 +1006,7 @@ static void *allocate_mem(struct submitter *s, int size)
 		return numa_alloc_onnode(size, s->numa_node);
 #endif
 
-	if (posix_memalign(&buf, t_io_uring_page_size, bs)) {
+	if (posix_memalign(&buf, t_io_uring_page_size, size)) {
 		printf("failed alloc\n");
 		return NULL;
 	}




[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux