From: Jens Axboe Date: Wed, 28 Sep 2022 15:11:41 +0000 (-0600) Subject: Add randtrimwrite data direction X-Git-Tag: fio-3.33~33 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=c16dc793a3c45780f67ce65244b6e91323dee014 Add randtrimwrite data direction This works like trimwrite, except we use random offsets for the trim location rather than sequential ones. Suggested-by: Josef Bacik Signed-off-by: Jens Axboe --- diff --git a/HOWTO.rst b/HOWTO.rst index 924f5ed9..e89d05f0 100644 --- a/HOWTO.rst +++ b/HOWTO.rst @@ -1134,6 +1134,9 @@ I/O type write 64K bytes on the same trimmed blocks. This behaviour will be consistent with ``number_ios`` or other Fio options limiting the total bytes or number of I/O's. + **randtrimwrite** + Like trimwrite, but uses random offsets rather + than sequential writes. Fio defaults to read if the option is not specified. For the mixed I/O types, the default is to split them 50/50. For certain types of I/O the diff --git a/fio.1 b/fio.1 index 39d6b4f4..4324a975 100644 --- a/fio.1 +++ b/fio.1 @@ -904,6 +904,11 @@ then the same blocks will be written to. So if `io_size=64K' is specified, Fio will trim a total of 64K bytes and also write 64K bytes on the same trimmed blocks. This behaviour will be consistent with `number_ios' or other Fio options limiting the total bytes or number of I/O's. +.TP +.B randtrimwrite +Like +.B trimwrite , +but uses random offsets rather than sequential writes. .RE .P Fio defaults to read if the option is not specified. For the mixed I/O diff --git a/io_ddir.h b/io_ddir.h index 296a9d04..7227e9ee 100644 --- a/io_ddir.h +++ b/io_ddir.h @@ -41,6 +41,7 @@ enum td_ddir { TD_DDIR_RANDRW = TD_DDIR_RW | TD_DDIR_RAND, TD_DDIR_RANDTRIM = TD_DDIR_TRIM | TD_DDIR_RAND, TD_DDIR_TRIMWRITE = TD_DDIR_TRIM | TD_DDIR_WRITE, + TD_DDIR_RANDTRIMWRITE = TD_DDIR_RANDTRIM | TD_DDIR_WRITE, }; #define td_read(td) ((td)->o.td_ddir & TD_DDIR_READ) @@ -67,7 +68,8 @@ static inline const char *ddir_str(enum td_ddir ddir) { static const char *__str[] = { NULL, "read", "write", "rw", "rand", "randread", "randwrite", "randrw", - "trim", NULL, "trimwrite", NULL, "randtrim" }; + "trim", NULL, "trimwrite", NULL, "randtrim", + NULL, "randtrimwrite" }; return __str[ddir]; } diff --git a/options.c b/options.c index 5d3daedf..a668b0e4 100644 --- a/options.c +++ b/options.c @@ -1947,6 +1947,10 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .oval = TD_DDIR_TRIMWRITE, .help = "Trim and write mix, trims preceding writes" }, + { .ival = "randtrimwrite", + .oval = TD_DDIR_RANDTRIMWRITE, + .help = "Randomly trim and write mix, trims preceding writes" + }, }, }, {