io_uring: Support RWF_ATOMIC
authorJohn Garry <john.g.garry@oracle.com>
Mon, 16 Sep 2024 16:53:43 +0000 (16:53 +0000)
committerJens Axboe <axboe@kernel.dk>
Mon, 16 Sep 2024 18:15:15 +0000 (12:15 -0600)
Set RWF_ATOMIC for writes and oatomic==1.

Signed-off-by: John Garry <john.g.garry@oracle.com>
Link: https://lore.kernel.org/r/20240916165347.2226763-6-john.g.garry@oracle.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
engines/io_uring.c

index 1d4a6118431d572b11b6a0530827bc66a1730251..96a042a88820b801481c737cbd931b646d2a6d49 100644 (file)
@@ -392,6 +392,8 @@ static int fio_ioring_prep(struct thread_data *td, struct io_u *io_u)
                sqe->rw_flags = 0;
                if (o->nowait)
                        sqe->rw_flags |= RWF_NOWAIT;
+               if (td->o.oatomic && io_u->ddir == DDIR_WRITE)
+                       sqe->rw_flags |= RWF_ATOMIC;
 
                /*
                 * Since io_uring can have a submission context (sqthread_poll)
@@ -1582,7 +1584,8 @@ static struct ioengine_ops ioengine_uring = {
        .name                   = "io_uring",
        .version                = FIO_IOOPS_VERSION,
        .flags                  = FIO_ASYNCIO_SYNC_TRIM | FIO_NO_OFFLOAD |
-                                       FIO_ASYNCIO_SETS_ISSUE_TIME,
+                                       FIO_ASYNCIO_SETS_ISSUE_TIME |
+                                       FIO_ATOMICWRITES,
        .init                   = fio_ioring_init,
        .post_init              = fio_ioring_post_init,
        .io_u_init              = fio_ioring_io_u_init,