X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=init.c;h=50c476012d374014b843eff27560f629ae6c9f97;hp=911ee32f995d4c6fd6562a2cde3194eaa1beca8c;hb=12b8a831438e8b2f701bfff930242bcafcc6a9ee;hpb=e47f799f567508835b60675ed659c97f78e7cc94 diff --git a/init.c b/init.c index 911ee32f..50c47601 100644 --- a/init.c +++ b/init.c @@ -17,7 +17,7 @@ #include "fio.h" #include "parse.h" -static char fio_version_string[] = "fio 1.14a"; +static char fio_version_string[] = "fio 1.15.1"; #define FIO_RANDSEED (0xb1899bedUL) @@ -115,6 +115,9 @@ static struct thread_data *get_new_job(int global, struct thread_data *parent) td = &threads[thread_number++]; *td = *parent; + dup_files(td, parent); + options_mem_dupe(td); + td->thread_number = thread_number; return td; } @@ -358,7 +361,6 @@ static int init_random_state(struct thread_data *td) return 0; } - /* * Adds a job to the list of things todo. Sanitizes the various options * to make sure we don't have conflicts, and initializes various @@ -369,7 +371,6 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num) const char *ddir_str[] = { NULL, "read", "write", "rw", NULL, "randread", "randwrite", "randrw" }; unsigned int i; - struct fio_file *f; const char *engine; char fname[PATH_MAX]; int numjobs, file_alloced; @@ -412,18 +413,12 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num) if (fixup_options(td)) goto err; - for_each_file(td, f, i) { - if (td->o.directory && f->filetype == FIO_TYPE_FILE) { - sprintf(fname, "%s/%s", td->o.directory, f->file_name); - f->file_name = strdup(fname); - } - } - td->mutex = fio_sem_init(0); 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) { @@ -486,6 +481,7 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num) td_new->o.numjobs = 1; td_new->o.stonewall = 0; + td_new->o.new_group = 0; if (file_alloced) { td_new->o.filename = NULL; @@ -549,10 +545,16 @@ static int parse_jobs_ini(char *file, int stonewall_flag) p = fgets(string, 4095, f); if (!p) break; + + strip_blank_front(&p); + strip_blank_end(p); + if (is_empty_or_comment(p)) continue; - if (sscanf(p, "[%255s]", name) != 1) + if (sscanf(p, "[%255s]", name) != 1) { + log_err("fio: option <%s> outside of job section\n", p); continue; + } global = !strncmp(name, "global", 6); @@ -807,6 +809,7 @@ int parse_options(int argc, char *argv[]) } free(ini_file); + options_mem_free(&def_thread); if (!thread_number) { log_err("No jobs defined(s)\n");