projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gfio: graphing updates
[fio.git]
/
init.c
diff --git
a/init.c
b/init.c
index 0b57a9c238565e27be1cd0d3454732a3c1b0f135..3041ac45fed2ac66a77af0f6a811747eaa74cf34 100644
(file)
--- a/
init.c
+++ b/
init.c
@@
-568,6
+568,15
@@
static int fixup_options(struct thread_data *td)
}
#endif
}
#endif
+ /*
+ * For fully compressible data, just zero them at init time.
+ * It's faster than repeatedly filling it.
+ */
+ if (td->o.compress_percentage == 100) {
+ td->o.zero_buffers = 1;
+ td->o.compress_percentage = 0;
+ }
+
return ret;
}
return ret;
}
@@
-735,7
+744,8
@@
int ioengine_load(struct thread_data *td)
* to make sure we don't have conflicts, and initializes various
* members of td.
*/
* to make sure we don't have conflicts, and initializes various
* members of td.
*/
-static int add_job(struct thread_data *td, const char *jobname, int job_add_num)
+static int add_job(struct thread_data *td, const char *jobname, int job_add_num,
+ int recursed)
{
unsigned int i;
char fname[PATH_MAX];
{
unsigned int i;
char fname[PATH_MAX];
@@
-848,7
+858,7
@@
static int add_job(struct thread_data *td, const char *jobname, int job_add_num)
if (!terse_output) {
if (!job_add_num) {
if (!terse_output) {
if (!job_add_num) {
- if (is_backend)
+ if (is_backend
&& !recursed
)
fio_server_send_add_job(&td->o, td->io_ops->name);
if (!strcmp(td->io_ops->name, "cpuio")) {
fio_server_send_add_job(&td->o, td->io_ops->name);
if (!strcmp(td->io_ops->name, "cpuio")) {
@@
-905,7
+915,7
@@
static int add_job(struct thread_data *td, const char *jobname, int job_add_num)
job_add_num = numjobs - 1;
job_add_num = numjobs - 1;
- if (add_job(td_new, jobname, job_add_num))
+ if (add_job(td_new, jobname, job_add_num
, 1
))
goto err;
}
goto err;
}
@@
-930,7
+940,7
@@
void add_job_opts(const char **o)
if (!strncmp(o[i], "name", 4)) {
in_global = 0;
if (td)
if (!strncmp(o[i], "name", 4)) {
in_global = 0;
if (td)
- add_job(td, jobname, 0);
+ add_job(td, jobname, 0
, 0
);
td = NULL;
sprintf(jobname, "%s", o[i] + 5);
}
td = NULL;
sprintf(jobname, "%s", o[i] + 5);
}
@@
-949,7
+959,7
@@
void add_job_opts(const char **o)
}
if (td)
}
if (td)
- add_job(td, jobname, 0);
+ add_job(td, jobname, 0
, 0
);
}
static int skip_this_section(const char *name)
}
static int skip_this_section(const char *name)
@@
-1131,7
+1141,7
@@
int parse_jobs_ini(char *file, int is_buf, int stonewall_flag)
for (i = 0; i < num_opts; i++)
log_info("--%s ", opts[i]);
for (i = 0; i < num_opts; i++)
log_info("--%s ", opts[i]);
- ret = add_job(td, name, 0);
+ ret = add_job(td, name, 0
, 0
);
} else {
log_err("fio: job %s dropped\n", name);
put_job(td);
} else {
log_err("fio: job %s dropped\n", name);
put_job(td);
@@
-1497,7
+1507,7
@@
int parse_cmd_line(int argc, char *argv[])
char *val = optarg;
if (!strncmp(opt, "name", 4) && td) {
char *val = optarg;
if (!strncmp(opt, "name", 4) && td) {
- ret = add_job(td, td->o.name ?: "fio", 0);
+ ret = add_job(td, td->o.name ?: "fio", 0
, 0
);
if (ret)
return 0;
td = NULL;
if (ret)
return 0;
td = NULL;
@@
-1601,7
+1611,7
@@
int parse_cmd_line(int argc, char *argv[])
if (td) {
if (!ret)
if (td) {
if (!ret)
- ret = add_job(td, td->o.name ?: "fio", 0);
+ ret = add_job(td, td->o.name ?: "fio", 0
, 0
);
}
while (!ret && optind < argc) {
}
while (!ret && optind < argc) {
@@
-1630,12
+1640,16
@@
int fio_init_options(void)
return 0;
}
return 0;
}
+extern int fio_check_options(struct thread_options *);
+
int parse_options(int argc, char *argv[])
{
int job_files, i;
if (fio_init_options())
return 1;
int parse_options(int argc, char *argv[])
{
int job_files, i;
if (fio_init_options())
return 1;
+ if (fio_test_cconv(&def_thread.o))
+ log_err("fio: failed internal cconv test\n");
job_files = parse_cmd_line(argc, argv);
job_files = parse_cmd_line(argc, argv);