In order to detect when we are at the beginning of a trim phase we check
io_hist_len and should check that the previous operation was not a
*trim* (instead of not a read). Without this change trim_backlog_batch
will have no effect because after one batch is done, fio will simply
start a new batch because io_hist_len is still a multiple of
trim_backlog and the last operation in a batch was a trim which is not a
read.
For check_get_verify checking against read is appropriate but for
check_get_trim we must check against a trim.
Also we need to decrement the trim_batch count for the first trim
operation we send through.
Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
else
td->trim_batch = 0;
} else if (!(td->io_hist_len % td->o.trim_backlog) &&
- td->last_ddir_completed != DDIR_READ) {
- td->trim_batch = td->o.trim_batch;
- if (!td->trim_batch)
- td->trim_batch = td->o.trim_backlog;
- if (get_next_trim(td, io_u))
+ td->last_ddir_completed != DDIR_TRIM) {
+ if (get_next_trim(td, io_u)) {
+ td->trim_batch = td->o.trim_batch;
+ if (!td->trim_batch)
+ td->trim_batch = td->o.trim_backlog;
+ td->trim_batch--;
return true;
+ }
}
return false;