projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
init: exit on failure to add all jobs
[fio.git]
/
init.c
diff --git
a/init.c
b/init.c
index 1ba8fe6e5b08f359d92f582ff10b51099d3ef46e..213844647752f4212f88e7dd837149defbf833b5 100644
(file)
--- a/
init.c
+++ b/
init.c
@@
-356,6
+356,9
@@
static int setup_thread_area(void)
perror("shmat");
return 1;
}
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));
#endif
memset(threads, 0, max_jobs * sizeof(struct thread_data));
@@
-564,22
+567,15
@@
static unsigned long long get_rand_start_delay(struct thread_data *td)
return delayrange;
}
return delayrange;
}
+/*
+ * <3 Johannes
+ */
static unsigned int gcd(unsigned int m, unsigned int n)
{
static unsigned int gcd(unsigned int m, unsigned int n)
{
- unsigned int r;
-
- if (!m || !n)
- return 0;
+ if (!n)
+ return m;
- do {
- r = m % n;
- if (!r)
- break;
- m = n;
- n = r;
- } while (1);
-
- return n;
+ return gcd(n, m % n);
}
/*
}
/*
@@
-1027,7
+1023,7
@@
int ioengine_load(struct thread_data *td)
*/
if (origeo) {
memcpy(td->eo, origeo, td->io_ops->option_struct_size);
*/
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);
} else {
memset(td->eo, 0, td->io_ops->option_struct_size);
fill_default_options(td->eo, td->io_ops->options);
@@
-2330,17
+2326,22
@@
int parse_cmd_line(int argc, char *argv[], int client_type)
case 'b':
write_bw_log = 1;
break;
case 'b':
write_bw_log = 1;
break;
- case 'o':
+ case 'o': {
+ FILE *tmp;
+
if (f_out && f_out != stdout)
fclose(f_out);
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;
break;
+ }
case 'm':
output_format = FIO_OUTPUT_TERSE;
break;
case 'm':
output_format = FIO_OUTPUT_TERSE;
break;
@@
-2712,7
+2713,7
@@
int parse_cmd_line(int argc, char *argv[], int client_type)
if (!ret) {
ret = add_job(td, td->o.name ?: "fio", 0, 0, client_type);
if (ret)
if (!ret) {
ret = add_job(td, td->o.name ?: "fio", 0, 0, client_type);
if (ret)
-
did_arg = 1
;
+
exit(1)
;
}
}
}
}
@@
-2724,9
+2725,6
@@
int parse_cmd_line(int argc, char *argv[], int client_type)
}
out_free:
}
out_free:
- if (pid_file)
- free(pid_file);
-
return ini_idx;
}
return ini_idx;
}
@@
-2795,7
+2793,7
@@
int parse_options(int argc, char *argv[])
if (did_arg)
return 0;
if (did_arg)
return 0;
- log_err("No job
s
(s) defined\n\n");
+ log_err("No job(s) defined\n\n");
if (!did_arg) {
usage(argv[0]);
if (!did_arg) {
usage(argv[0]);