The following changes since commit f25f4ef6d123173d7669553ec712419f95c1a3ea: oslib/libmtd: kill dead code (2017-07-06 08:09:22 -0600) are available in the git repository at: git://git.kernel.dk/fio.git master for you to fetch changes up to 6210cf66316e25498ab2e445731b3bb6b886c363: Fio 2.99 (2017-07-07 12:45:04 -0600) ---------------------------------------------------------------- Jens Axboe (3): io_u: sequence random buflen generation individually init: add comment as to how we seed read/write/trim generators Fio 2.99 FIO-VERSION-GEN | 2 +- fio.h | 4 +++- init.c | 17 ++++++++++++++++- io_u.c | 4 ++-- os/windows/install.wxs | 2 +- 5 files changed, 23 insertions(+), 6 deletions(-) --- Diff of recent changes: diff --git a/FIO-VERSION-GEN b/FIO-VERSION-GEN index 3b4f206..f82aeee 100755 --- a/FIO-VERSION-GEN +++ b/FIO-VERSION-GEN @@ -1,7 +1,7 @@ #!/bin/sh GVF=FIO-VERSION-FILE -DEF_VER=fio-2.21 +DEF_VER=fio-2.99 LF=' ' diff --git a/fio.h b/fio.h index d5d6bfe..39d775c 100644 --- a/fio.h +++ b/fio.h @@ -91,6 +91,8 @@ enum { enum { FIO_RAND_BS_OFF = 0, + FIO_RAND_BS1_OFF, + FIO_RAND_BS2_OFF, FIO_RAND_VER_OFF, FIO_RAND_MIX_OFF, FIO_RAND_FILE_OFF, @@ -214,7 +216,7 @@ struct thread_data { unsigned long rand_seeds[FIO_RAND_NR_OFFS]; - struct frand_state bsrange_state; + struct frand_state bsrange_state[DDIR_RWDIR_CNT]; struct frand_state verify_state; struct frand_state trim_state; struct frand_state delay_state; diff --git a/init.c b/init.c index a4b5adb..9b2b63d 100644 --- a/init.c +++ b/init.c @@ -921,7 +921,22 @@ static void td_fill_rand_seeds_internal(struct thread_data *td, bool use64) { int i; - init_rand_seed(&td->bsrange_state, td->rand_seeds[FIO_RAND_BS_OFF], use64); + /* + * trimwrite is special in that we need to generate the same + * offsets to get the "write after trim" effect. If we are + * using bssplit to set buffer length distributions, ensure that + * we seed the trim and write generators identically. + */ + if (td_trimwrite(td)) { + init_rand_seed(&td->bsrange_state[DDIR_READ], td->rand_seeds[FIO_RAND_BS_OFF], use64); + init_rand_seed(&td->bsrange_state[DDIR_WRITE], td->rand_seeds[FIO_RAND_BS1_OFF], use64); + init_rand_seed(&td->bsrange_state[DDIR_TRIM], td->rand_seeds[FIO_RAND_BS1_OFF], use64); + } else { + init_rand_seed(&td->bsrange_state[DDIR_READ], td->rand_seeds[FIO_RAND_BS_OFF], use64); + init_rand_seed(&td->bsrange_state[DDIR_WRITE], td->rand_seeds[FIO_RAND_BS1_OFF], use64); + init_rand_seed(&td->bsrange_state[DDIR_TRIM], td->rand_seeds[FIO_RAND_BS2_OFF], use64); + } + td_fill_verify_state_seed(td); init_rand_seed(&td->rwmix_state, td->rand_seeds[FIO_RAND_MIX_OFF], false); diff --git a/io_u.c b/io_u.c index 8d42d65..ed8e84a 100644 --- a/io_u.c +++ b/io_u.c @@ -552,9 +552,9 @@ static unsigned int __get_next_buflen(struct thread_data *td, struct io_u *io_u, if (!io_u_fits(td, io_u, minbs)) return 0; - frand_max = rand_max(&td->bsrange_state); + frand_max = rand_max(&td->bsrange_state[ddir]); do { - r = __rand(&td->bsrange_state); + r = __rand(&td->bsrange_state[ddir]); if (!td->o.bssplit_nr[ddir]) { buflen = 1 + (unsigned int) ((double) maxbs * diff --git a/os/windows/install.wxs b/os/windows/install.wxs index 860570a..500d64c 100755 --- a/os/windows/install.wxs +++ b/os/windows/install.wxs @@ -10,7 +10,7 @@ <Product Id="*" Codepage="1252" Language="1033" Manufacturer="fio" Name="fio" - UpgradeCode="2338A332-5511-43CF-B9BD-5C60496CCFCC" Version="2.21"> + UpgradeCode="2338A332-5511-43CF-B9BD-5C60496CCFCC" Version="2.99"> <Package Description="Flexible IO Tester" InstallerVersion="301" Keywords="Installer,MSI,Database" -- To unsubscribe from this list: send the line "unsubscribe fio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html