Consider the maximum block size difference the minimum for loop exit
For mixed block sizes, we can hit the condition where we decided
to stop even if we could have done a small block size. Don't do
another loop for those cases.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --git a/backend.c b/backend.c
index 3567990..ae4216d 100644
--- a/backend.c
+++ b/backend.c
@@ -884,8 +884,7 @@
char *p;
max_units = td->o.iodepth;
- max_bs = max(td->o.max_bs[DDIR_READ], td->o.max_bs[DDIR_WRITE]);
- max_bs = max(td->o.max_bs[DDIR_TRIM], max_bs);
+ max_bs = td_max_bs(td);
min_write = td->o.min_bs[DDIR_WRITE];
td->orig_buffer_size = (unsigned long long) max_bs
* (unsigned long long) max_units;
@@ -1042,7 +1041,7 @@
* are done.
*/
diff = td->o.size - ddir_rw_sum(td->io_bytes);
- if (diff < td->o.rw_min_bs)
+ if (diff < td_max_bs(td))
return 0;
return 1;