X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=engines%2Fio_uring.c;h=53cb60c5a50042fe7a33ff70c8f1f984adf8a586;hp=8c4bcc57f414582419bad9986a29143b2d686785;hb=4c29a34fcc8cae333ec8b7af7657495745153b44;hpb=f4f37131558402109b113e731d583aadb3fc38a4 diff --git a/engines/io_uring.c b/engines/io_uring.c index 8c4bcc57..53cb60c5 100644 --- a/engines/io_uring.c +++ b/engines/io_uring.c @@ -181,10 +181,17 @@ static int fio_ioring_prep(struct thread_data *td, struct io_u *io_u) } sqe->off = io_u->offset; } else if (ddir_sync(io_u->ddir)) { - sqe->fsync_flags = 0; - if (io_u->ddir == DDIR_DATASYNC) - sqe->fsync_flags |= IORING_FSYNC_DATASYNC; - sqe->opcode = IORING_OP_FSYNC; + if (io_u->ddir == DDIR_SYNC_FILE_RANGE) { + sqe->off = f->first_write; + sqe->len = f->last_write - f->first_write; + sqe->sync_range_flags = td->o.sync_file_range; + sqe->opcode = IORING_OP_SYNC_FILE_RANGE; + } else { + sqe->fsync_flags = 0; + if (io_u->ddir == DDIR_DATASYNC) + sqe->fsync_flags |= IORING_FSYNC_DATASYNC; + sqe->opcode = IORING_OP_FSYNC; + } } sqe->user_data = (unsigned long) io_u;