number_ios should be twice for trimwrite, just like size or io_size. Update the documentation for "rw=trimwrite" to explain the changes. Signed-off-by: Ankit Kumar <ankit.kumar@xxxxxxxxxxx> --- HOWTO.rst | 6 +++++- backend.c | 6 ++++-- fio.1 | 5 ++++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/HOWTO.rst b/HOWTO.rst index 2c6c6dbe..924f5ed9 100644 --- a/HOWTO.rst +++ b/HOWTO.rst @@ -1129,7 +1129,11 @@ I/O type Random mixed reads and writes. **trimwrite** Sequential trim+write sequences. Blocks will be trimmed first, - then the same blocks will be written to. + 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. 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/backend.c b/backend.c index fe614f6e..ec535bcc 100644 --- a/backend.c +++ b/backend.c @@ -971,9 +971,11 @@ static void do_io(struct thread_data *td, uint64_t *bytes_done) total_bytes += td->o.size; /* In trimwrite mode, each byte is trimmed and then written, so - * allow total_bytes to be twice as big */ - if (td_trimwrite(td)) + * allow total_bytes or number of ios to be twice as big */ + if (td_trimwrite(td)) { total_bytes += td->total_io_size; + td->o.number_ios *= 2; + } while ((td->o.read_iolog_file && !flist_empty(&td->io_log_list)) || (!flist_empty(&td->trim_list)) || !io_issue_bytes_exceeded(td) || diff --git a/fio.1 b/fio.1 index 67d7c710..c67bd464 100644 --- a/fio.1 +++ b/fio.1 @@ -900,7 +900,10 @@ Random mixed reads and writes. .TP .B trimwrite Sequential trim+write sequences. Blocks will be trimmed first, -then the same blocks will be written to. +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. .RE .P Fio defaults to read if the option is not specified. For the mixed I/O -- 2.17.1