Add support for different weights for reads and writes with bssplit
You can now do:
bssplit=4k/20:8k/80,1k/50:4k/50
To have 20% 4k reads and 80% 8k reads, while having 50% 1k writes
and 50% 4k writes. This is identical to how the bs= option treats
reads and writes.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/io_u.c b/io_u.c
index 7108939..d92d940 100644
--- a/io_u.c
+++ b/io_u.c
@@ -248,7 +248,7 @@
buflen = minbs;
else {
r = os_random_long(&td->bsrange_state);
- if (!td->o.bssplit_nr) {
+ if (!td->o.bssplit_nr[ddir]) {
buflen = 1 + (unsigned int) ((double) maxbs *
(r / (OS_RAND_MAX + 1.0)));
if (buflen < minbs)
@@ -257,8 +257,8 @@
long perc = 0;
unsigned int i;
- for (i = 0; i < td->o.bssplit_nr; i++) {
- struct bssplit *bsp = &td->o.bssplit[i];
+ for (i = 0; i < td->o.bssplit_nr[ddir]; i++) {
+ struct bssplit *bsp = &td->o.bssplit[ddir][i];
buflen = bsp->bs;
perc += bsp->perc;