X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=init.c;h=b41273181cd5fb6bc8e41941d6267b64975868ee;hp=e3ff39c01d0bdd78c450d9ee2b321982f0b14a4a;hb=4d658652bac63fd72af8302e27deba5beb381906;hpb=89cf1480594858ad4e02499834c04fe48ff0a89d diff --git a/init.c b/init.c index e3ff39c0..b4127318 100644 --- a/init.c +++ b/init.c @@ -26,11 +26,11 @@ #include "fio_version.h" #if FIO_PATCH > 0 -static char fio_version_string[] = __fio_stringify(FIO_MAJOR) "." \ +const char fio_version_string[] = __fio_stringify(FIO_MAJOR) "." \ __fio_stringify(FIO_MINOR) "." \ __fio_stringify(FIO_PATCH); #else -static char fio_version_string[] = __fio_stringify(FIO_MAJOR) "." \ +const char fio_version_string[] = __fio_stringify(FIO_MAJOR) "." \ __fio_stringify(FIO_MINOR); #endif @@ -54,7 +54,7 @@ char **job_sections = NULL; int nr_job_sections = 0; char *exec_profile = NULL; int warnings_fatal = 0; -int terse_version = 2; +int terse_version = 3; int is_backend = 0; int nr_clients = 0; int log_syslog = 0; @@ -194,7 +194,7 @@ static struct option l_opts[FIO_NR_OPTIONS] = { .val = 'S', }, { .name = (char *) "daemonize", - .has_arg = no_argument, + .has_arg = required_argument, .val = 'D', }, { @@ -318,6 +318,8 @@ static void put_job(struct thread_data *td) if (td->error) log_info("fio: %s\n", td->verror); + fio_options_free(td); + memset(&threads[td->thread_number - 1], 0, sizeof(*td)); thread_number--; } @@ -962,7 +964,7 @@ int parse_jobs_ini(char *file, int is_buf, int stonewall_flag) if (is_buf) p = strsep(&file, "\n"); else - p = fgets(string, 4095, f); + p = fgets(string, 4096, f); if (!p) break; } @@ -1070,6 +1072,12 @@ int parse_jobs_ini(char *file, int is_buf, int stonewall_flag) if (dump_cmdline) log_info("\n"); + i = 0; + while (i < nr_job_sections) { + free(job_sections[i]); + i++; + } + for (i = 0; i < num_opts; i++) free(opts[i]); @@ -1121,7 +1129,8 @@ static void usage(const char *name) printf("\t--warnings-fatal Fio parser warnings are fatal\n"); printf("\t--max-jobs\tMaximum number of threads/processes to support\n"); printf("\t--server=args\tStart a backend fio server\n"); - printf("\t--client=hostname Talk to remove backend fio server at hostname\n"); + printf("\t--daemonize=pidfile Background fio server, write pid to file\n"); + printf("\t--client=hostname Talk to remote backend fio server at hostname\n"); printf("\nFio was written by Jens Axboe "); printf("\n Jens Axboe \n"); } @@ -1243,9 +1252,9 @@ static int client_flag_set(char c) return 0; } -int parse_cmd_client(void *client, char *opt) +void parse_cmd_client(void *client, char *opt) { - return fio_client_add_cmd_option(client, opt); + fio_client_add_cmd_option(client, opt); } int parse_cmd_line(int argc, char *argv[]) @@ -1253,7 +1262,7 @@ int parse_cmd_line(int argc, char *argv[]) struct thread_data *td = NULL; int c, ini_idx = 0, lidx, ret = 0, do_exit = 0, exit_val = 0; char *ostr = cmd_optstr; - int daemonize_server = 0; + void *pid_file = NULL; void *cur_client = NULL; int backend = 0; @@ -1267,11 +1276,7 @@ int parse_cmd_line(int argc, char *argv[]) did_arg = 1; if ((c & FIO_CLIENT_FLAG) || client_flag_set(c)) { - if (parse_cmd_client(cur_client, argv[optind - 1])) { - exit_val = 1; - do_exit++; - break; - } + parse_cmd_client(cur_client, argv[optind - 1]); c &= ~FIO_CLIENT_FLAG; } @@ -1325,7 +1330,7 @@ int parse_cmd_line(int argc, char *argv[]) break; case 'V': terse_version = atoi(optarg); - if (terse_version != 2) { + if (!(terse_version == 2 || terse_version == 3)) { log_err("fio: bad terse version format\n"); exit_val = 1; do_exit++; @@ -1412,7 +1417,7 @@ int parse_cmd_line(int argc, char *argv[]) backend = 1; break; case 'D': - daemonize_server = 1; + pid_file = strdup(optarg); break; case 'C': if (is_backend) { @@ -1449,7 +1454,7 @@ int parse_cmd_line(int argc, char *argv[]) } if (is_backend && backend) - return fio_start_server(daemonize_server); + return fio_start_server(pid_file); if (td) { if (!ret) @@ -1500,7 +1505,7 @@ int parse_options(int argc, char *argv[]) } free(ini_file); - options_mem_free(&def_thread); + fio_options_free(&def_thread); if (!thread_number) { if (dump_cmdline) @@ -1528,6 +1533,8 @@ int parse_options(int argc, char *argv[]) fio_gtod_cpu = def_thread.o.gtod_cpu; } - log_info("fio %s\n", fio_version_string); + if (!terse_output) + log_info("fio %s\n", fio_version_string); + return 0; }