It only measures the read performance.
Signed-off-by: Jaegeuk Kim <[email protected]>
---
tools/f2fs_io/f2fs_io.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/tools/f2fs_io/f2fs_io.c b/tools/f2fs_io/f2fs_io.c
index 2d64eda81706..2ed9cb4184b8 100644
--- a/tools/f2fs_io/f2fs_io.c
+++ b/tools/f2fs_io/f2fs_io.c
@@ -24,6 +24,8 @@
#include <linux/fs.h>
#include <signal.h>
#include <stdarg.h>
+#include <sys/uio.h>
+#include <stdarg.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
@@ -929,6 +931,7 @@ static void do_write_advice(int argc, char **argv, const
struct cmd_desc *cmd)
"Read data in file_path and print nbytes\n" \
"IO can be\n" \
" buffered : buffered IO\n" \
+" dontcache: buffered IO + dontcache\n" \
" dio : direct IO\n" \
" mmap : mmap IO\n" \
" mlock : mmap + mlock\n" \
@@ -948,6 +951,7 @@ static void do_read(int argc, char **argv, const struct
cmd_desc *cmd)
int flags = 0;
int do_mmap = 0;
int do_mlock = 0;
+ int do_dontcache = 0;
int fd, advice;
if (argc != 8) {
@@ -972,6 +976,8 @@ static void do_read(int argc, char **argv, const struct
cmd_desc *cmd)
do_mmap = 1;
else if (!strcmp(argv[4], "mlock"))
do_mlock = 1;
+ else if (!strcmp(argv[4], "dontcache"))
+ do_dontcache = 1;
else if (strcmp(argv[4], "buffered"))
die("Wrong IO type");
@@ -1016,7 +1022,12 @@ static void do_read(int argc, char **argv, const struct
cmd_desc *cmd)
read_cnt = count * buf_size;
} else {
for (i = 0; i < count; i++) {
- ret = pread(fd, buf, buf_size, offset + buf_size * i);
+ if (!do_dontcache) {
+ ret = pread(fd, buf, buf_size, offset +
buf_size * i);
+ } else {
+ struct iovec iov = { .iov_base = buf, .iov_len
= buf_size };
+ ret = preadv2(fd, &iov, 1, offset + buf_size *
i, RWF_DONTCACHE);
+ }
if (ret != buf_size) {
printf("pread expected: %"PRIu64", readed:
%"PRIu64"\n",
buf_size, ret);
--
2.51.0.470.ga7dc726c21-goog
_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel