From: Jens Axboe Date: Wed, 11 Dec 2019 23:36:50 +0000 (-0700) Subject: Test patches for RWF_NOACCESS X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=7a8d36215a9f6434a582dfd900958e85fb13fb9d;p=fio.git Test patches for RWF_NOACCESS Signed-off-by: Jens Axboe --- diff --git a/engines/io_uring.c b/engines/io_uring.c index 9ba126d8..f5d302d2 100644 --- a/engines/io_uring.c +++ b/engines/io_uring.c @@ -76,6 +76,7 @@ struct ioring_options { unsigned int sqpoll_set; unsigned int sqpoll_cpu; unsigned int uncached; + unsigned int noaccess; }; static int fio_ioring_sqpoll_cb(void *data, unsigned long long *val) @@ -142,6 +143,15 @@ static struct fio_option options[] = { .category = FIO_OPT_C_ENGINE, .group = FIO_OPT_G_IOURING, }, + { + .name = "noaccess", + .lname = "No access", + .type = FIO_OPT_INT, + .off1 = offsetof(struct ioring_options, noaccess), + .help = "Use RWF_NOACCESS for buffered reads", + .category = FIO_OPT_C_ENGINE, + .group = FIO_OPT_G_IOURING, + }, { .name = NULL, }, @@ -192,6 +202,8 @@ static int fio_ioring_prep(struct thread_data *td, struct io_u *io_u) } if (!td->o.odirect && o->uncached) sqe->rw_flags = RWF_UNCACHED; + if (!td->o.odirect && o->noaccess) + sqe->rw_flags = 0x80; sqe->off = io_u->offset; } else if (ddir_sync(io_u->ddir)) { if (io_u->ddir == DDIR_SYNC_FILE_RANGE) { diff --git a/engines/sync.c b/engines/sync.c index 65fd210c..94e3f855 100644 --- a/engines/sync.c +++ b/engines/sync.c @@ -40,6 +40,7 @@ struct psyncv2_options { unsigned int hipri; unsigned int hipri_percentage; unsigned int uncached; + unsigned int noaccess; }; static struct fio_option options[] = { @@ -73,6 +74,15 @@ static struct fio_option options[] = { .category = FIO_OPT_C_ENGINE, .group = FIO_OPT_G_INVALID, }, + { + .name = "noaccess", + .lname = "noaccess", + .type = FIO_OPT_INT, + .off1 = offsetof(struct psyncv2_options, noaccess), + .help = "Use RWF_NOACCESS for buffered reads", + .category = FIO_OPT_C_ENGINE, + .group = FIO_OPT_G_INVALID, + }, { .name = NULL, }, @@ -164,6 +174,8 @@ static enum fio_q_status fio_pvsyncio2_queue(struct thread_data *td, flags |= RWF_HIPRI; if (!td->o.odirect && o->uncached) flags |= RWF_UNCACHED; + if (!td->o.odirect && o->noaccess) + flags |= 0x80; iov->iov_base = io_u->xfer_buf; iov->iov_len = io_u->xfer_buflen;