X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=init.c;h=72ec85dc740ef08f500662d25c7b7081f2d316f6;hp=f25bbe657374dc3e965af366e9c4dd794c1de663;hb=4c8e9640702d90f9e2c5d5d5f5f9e299c67978eb;hpb=60862e579e7f47ceede8f8d105413c2114687c2a diff --git a/init.c b/init.c index f25bbe65..72ec85dc 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 @@ -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,6 +1129,7 @@ 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--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"); @@ -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; @@ -1321,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 != 3) { log_err("fio: bad terse version format\n"); exit_val = 1; do_exit++; @@ -1408,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) { @@ -1445,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) @@ -1496,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) @@ -1524,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; }