projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
client: don't setup shared mem area for just the frontend
[fio.git]
/
init.c
diff --git
a/init.c
b/init.c
index 1dcb4904da330dd090cba383dcce9c1471b6e523..40a699c56f81df1fb12e402c6e808123d5319672 100644
(file)
--- a/
init.c
+++ b/
init.c
@@
-47,6
+47,7
@@
int warnings_fatal = 0;
int terse_version = 2;
int is_backend = 0;
int nr_clients = 0;
int terse_version = 2;
int is_backend = 0;
int nr_clients = 0;
+int log_syslog = 0;
int write_bw_log = 0;
int read_only = 0;
int write_bw_log = 0;
int read_only = 0;
@@
-161,6
+162,10
@@
static struct option l_opts[FIO_NR_OPTIONS] = {
.has_arg = no_argument,
.val = 'S',
},
.has_arg = no_argument,
.val = 'S',
},
+ { .name = (char *) "daemonize",
+ .has_arg = no_argument,
+ .val = 'D',
+ },
{
.name = (char *) "net-port",
.has_arg = required_argument,
{
.name = (char *) "net-port",
.has_arg = required_argument,
@@
-659,12
+664,12
@@
static int add_job(struct thread_data *td, const char *jobname, int job_add_num)
goto err;
if (td->o.write_lat_log) {
goto err;
if (td->o.write_lat_log) {
- setup_log(&td->
ts.
lat_log);
- setup_log(&td->
ts.
slat_log);
- setup_log(&td->
ts.
clat_log);
+ setup_log(&td->lat_log);
+ setup_log(&td->slat_log);
+ setup_log(&td->clat_log);
}
if (td->o.write_bw_log)
}
if (td->o.write_bw_log)
- setup_log(&td->
ts.
bw_log);
+ setup_log(&td->bw_log);
if (!td->o.name)
td->o.name = strdup(jobname);
if (!td->o.name)
td->o.name = strdup(jobname);
@@
-1016,6
+1021,9
@@
static int setup_thread_area(void)
{
void *hash;
{
void *hash;
+ if (threads)
+ return 0;
+
/*
* 1024 is too much on some machines, scale max_jobs if
* we get a failure that looks like too large a shm segment
/*
* 1024 is too much on some machines, scale max_jobs if
* we get a failure that looks like too large a shm segment
@@
-1102,6
+1110,7
@@
struct debug_level debug_levels[] = {
{ .name = "mutex", .shift = FD_MUTEX },
{ .name = "profile", .shift = FD_PROFILE },
{ .name = "time", .shift = FD_TIME },
{ .name = "mutex", .shift = FD_MUTEX },
{ .name = "profile", .shift = FD_PROFILE },
{ .name = "time", .shift = FD_TIME },
+ { .name = "net", .shift = FD_NET },
{ .name = NULL, },
};
{ .name = NULL, },
};
@@
-1191,6
+1200,7
@@
static 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;
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;
while ((c = getopt_long_only(argc, argv, ostr, l_opts, &lidx)) != -1) {
switch (c) {
while ((c = getopt_long_only(argc, argv, ostr, l_opts, &lidx)) != -1) {
switch (c) {
@@
-1272,6
+1282,12
@@
static int parse_cmd_line(int argc, char *argv[])
const char *opt = l_opts[lidx].name;
char *val = optarg;
const char *opt = l_opts[lidx].name;
char *val = optarg;
+ if (setup_thread_area()) {
+ do_exit++;
+ exit_val = 1;
+ break;
+ }
+
if (!strncmp(opt, "name", 4) && td) {
ret = add_job(td, td->o.name ?: "fio", 0);
if (ret)
if (!strncmp(opt, "name", 4) && td) {
ret = add_job(td, td->o.name ?: "fio", 0);
if (ret)
@@
-1316,6
+1332,9
@@
static int parse_cmd_line(int argc, char *argv[])
}
is_backend = 1;
break;
}
is_backend = 1;
break;
+ case 'D':
+ daemonize_server = 1;
+ break;
case 'P':
fio_net_port = atoi(optarg);
break;
case 'P':
fio_net_port = atoi(optarg);
break;
@@
-1333,6
+1352,8
@@
static int parse_cmd_line(int argc, char *argv[])
exit_val = 1;
break;
}
exit_val = 1;
break;
}
+ if (do_exit)
+ break;
}
if (do_exit)
}
if (do_exit)
@@
-1345,7
+1366,7
@@
static int parse_cmd_line(int argc, char *argv[])
}
if (is_backend)
}
if (is_backend)
- return fio_s
erver(
);
+ return fio_s
tart_server(daemonize_server
);
if (td) {
if (!ret)
if (td) {
if (!ret)
@@
-1372,24
+1393,29
@@
int parse_options(int argc, char *argv[])
fio_options_fill_optstring();
fio_options_dup_and_init(l_opts);
fio_options_fill_optstring();
fio_options_dup_and_init(l_opts);
- if (setup_thread_area())
- return 1;
if (fill_def_thread())
return 1;
job_files = parse_cmd_line(argc, argv);
if (fill_def_thread())
return 1;
job_files = parse_cmd_line(argc, argv);
+ /*
+ * Don't setup shared memory for the frontend
+ */
+ if (!nr_clients && setup_thread_area())
+ return 1;
+
for (i = 0; i < job_files; i++) {
if (fill_def_thread())
return 1;
if (nr_clients) {
if (fio_clients_send_ini(ini_file[i]))
return 1;
for (i = 0; i < job_files; i++) {
if (fill_def_thread())
return 1;
if (nr_clients) {
if (fio_clients_send_ini(ini_file[i]))
return 1;
- } else {
+ free(ini_file[i]);
+ } else if (!is_backend) {
if (parse_jobs_ini(ini_file[i], 0, i))
return 1;
if (parse_jobs_ini(ini_file[i], 0, i))
return 1;
+ free(ini_file[i]);
}
}
- free(ini_file[i]);
}
free(ini_file);
}
free(ini_file);