}
}
+static void copy_opt_list(struct thread_data *dst, struct thread_data *src)
+{
+ struct flist_head *entry;
+
+ if (flist_empty(&src->opt_list))
+ return;
+
+ flist_for_each(entry, &src->opt_list) {
+ struct print_option *srcp, *dstp;
+
+ srcp = flist_entry(entry, struct print_option, list);
+ dstp = malloc(sizeof(*dstp));
+ dstp->name = strdup(srcp->name);
+ if (srcp->value)
+ dstp->value = strdup(srcp->value);
+ else
+ dstp->value = NULL;
+ flist_add_tail(&dstp->list, &dst->opt_list);
+ }
+}
+
/*
* Return a free job structure.
*/
*td = *parent;
INIT_FLIST_HEAD(&td->opt_list);
+ if (parent != &def_thread)
+ copy_opt_list(td, parent);
td->io_ops = NULL;
if (!preserve_eo)
}
static void json_add_job_opts(struct json_object *root, const char *name,
- struct flist_head *opt_list)
+ struct flist_head *opt_list, bool num_jobs)
{
struct json_object *dir_object;
struct flist_head *entry;
const char *pos = "";
p = flist_entry(entry, struct print_option, list);
+ if (!num_jobs && !strcmp(p->name, "numjobs"))
+ continue;
if (p->value)
pos = p->value;
json_object_add_value_string(dir_object, p->name, pos);
}
if (opt_list)
- json_add_job_opts(root, "job options", opt_list);
+ json_add_job_opts(root, "job options", opt_list, true);
add_ddir_status_json(ts, rs, DDIR_READ, root);
add_ddir_status_json(ts, rs, DDIR_WRITE, root);
json_object_add_value_int(root, "timestamp", time_p);
json_object_add_value_string(root, "time", time_buf);
global = get_global_options();
- json_add_job_opts(root, "global options", &global->opt_list);
+ json_add_job_opts(root, "global options", &global->opt_list, false);
array = json_create_array();
json_object_add_value_array(root, "jobs", array);
}