X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=init.c;h=0a2ace186f88bbaccc5bfccc39bb7c8e8cc854b7;hp=324dc7bdb3bb5780fe537163fdc183a8bebe92bc;hb=33a908a5cd18071e0b44b9e4110a468177f73fc4;hpb=42c3f3daa815c6e792dfc817baabb4090554075a diff --git a/init.c b/init.c index 324dc7bd..0a2ace18 100644 --- a/init.c +++ b/init.c @@ -356,6 +356,9 @@ static int setup_thread_area(void) perror("shmat"); return 1; } +#ifdef FIO_HAVE_SHM_ATTACH_REMOVED + shmctl(shm_id, IPC_RMID, NULL); +#endif #endif memset(threads, 0, max_jobs * sizeof(struct thread_data)); @@ -1020,7 +1023,7 @@ int ioengine_load(struct thread_data *td) */ if (origeo) { memcpy(td->eo, origeo, td->io_ops->option_struct_size); - options_mem_dupe(td->eo, td->io_ops->options); + options_mem_dupe(td->io_ops->options, td->eo); } else { memset(td->eo, 0, td->io_ops->option_struct_size); fill_default_options(td->eo, td->io_ops->options); @@ -2323,17 +2326,22 @@ int parse_cmd_line(int argc, char *argv[], int client_type) case 'b': write_bw_log = 1; break; - case 'o': + case 'o': { + FILE *tmp; + if (f_out && f_out != stdout) fclose(f_out); - f_out = fopen(optarg, "w+"); - if (!f_out) { - perror("fopen output"); - exit(1); + tmp = fopen(optarg, "w+"); + if (!tmp) { + log_err("fio: output file open error: %s\n", strerror(errno)); + exit_val = 1; + do_exit++; + break; } - f_err = f_out; + f_err = f_out = tmp; break; + } case 'm': output_format = FIO_OUTPUT_TERSE; break; @@ -2785,7 +2793,7 @@ int parse_options(int argc, char *argv[]) if (did_arg) return 0; - log_err("No jobs(s) defined\n\n"); + log_err("No job(s) defined\n\n"); if (!did_arg) { usage(argv[0]);