From: Jens Axboe Date: Thu, 22 Mar 2007 18:01:48 +0000 (+0100) Subject: Improve mixed random append option X-Git-Tag: fio-1.15~47 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=1e3d53acf28f1b61222eec244a67fad42f9a060d Improve mixed random append option If we set ->ddir_nr to o.ddir_nr initally, we can remove the double else in get_next_offset(). Signed-off-by: Jens Axboe --- diff --git a/init.c b/init.c index 911ee32f..27040326 100644 --- a/init.c +++ b/init.c @@ -424,6 +424,7 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num) td->ts.clat_stat[0].min_val = td->ts.clat_stat[1].min_val = ULONG_MAX; td->ts.slat_stat[0].min_val = td->ts.slat_stat[1].min_val = ULONG_MAX; td->ts.bw_stat[0].min_val = td->ts.bw_stat[1].min_val = ULONG_MAX; + td->ddir_nr = td->o.ddir_nr; if ((td->o.stonewall || td->o.numjobs > 1 || td->o.new_group) && prev_group_jobs) { diff --git a/io_u.c b/io_u.c index 45f37570..a171ee4b 100644 --- a/io_u.c +++ b/io_u.c @@ -52,6 +52,10 @@ static void mark_random_map(struct thread_data *td, struct io_u *io_u) while (blocks < nr_blocks) { unsigned int idx, bit; + /* + * If we have a mixed random workload, we may + * encounter blocks we already did IO to. + */ if (!td->o.ddir_nr && !random_map_free(td, f, block)) break; @@ -110,13 +114,12 @@ static int get_next_offset(struct thread_data *td, struct io_u *io_u) int loops = 5; if (td->o.ddir_nr) { - if (!td->ddir_nr) + if (!--td->ddir_nr) td->ddir_nr = td->o.ddir_nr; - else if (--td->ddir_nr) { + else { b = f->last_pos / td->o.min_bs[ddir]; goto out; - } else - td->ddir_nr = td->o.ddir_nr; + } } do {