summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2019-12-11 16:36:50 -0700
committerJens Axboe <axboe@kernel.dk>2019-12-11 16:36:50 -0700
commit7a8d36215a9f6434a582dfd900958e85fb13fb9d (patch)
tree293a02776bb2a5320dae4dde4ece2ecefb4dc5ea
parentfd9882facefa0f5b09c09d2bc5cb3a2b6eabda1a (diff)
downloadfio-noaccess.tar.gz
fio-noaccess.tar.bz2
Test patches for RWF_NOACCESSnoaccess
Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r--engines/io_uring.c12
-rw-r--r--engines/sync.c12
2 files changed, 24 insertions, 0 deletions
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)
@@ -143,6 +144,15 @@ static struct fio_option options[] = {
.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[] = {
@@ -74,6 +75,15 @@ static struct fio_option options[] = {
.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;