#define DEF_NICE (0)
#define DEF_NR_FILES (1)
#define DEF_UNLINK (0)
+#define DEF_WRITE_BW_LOG (0)
+#define DEF_WRITE_LAT_LOG (0)
static int def_timeout = DEF_TIMEOUT;
struct thread_data *threads = NULL;
int rate_quit = 0;
-int write_lat_log = 0;
-int write_bw_log = 0;
int exitall_on_terminate = 0;
int terse_output = 0;
unsigned long long mlock_size = 0;
FILE *f_out = NULL;
FILE *f_err = NULL;
+static int write_lat_log = DEF_WRITE_LAT_LOG;
+static int write_bw_log = DEF_WRITE_BW_LOG;
+
/*
* Return a free job structure.
*/
if (td->odirect)
td->io_ops->flags |= FIO_RAWIO;
- if (td->filetype == FIO_TYPE_FILE) {
+ if (td->filename)
+ td->nr_uniq_files = 1;
+ else
+ td->nr_uniq_files = td->nr_files;
+
+ if (td->filetype == FIO_TYPE_FILE || td->filename) {
char tmp[PATH_MAX];
int len = 0;
int i;
f->fd = -1;
f->fileno = i;
- sprintf(tmp + len, "%s.%d.%d", jobname, td->thread_number, i);
+ if (td->filename)
+ sprintf(tmp + len, "%s", td->filename);
+ else
+ sprintf(tmp + len, "%s.%d.%d", jobname, td->thread_number, i);
f->file_name = strdup(tmp);
}
} else {
if (setup_rate(td))
goto err;
- if (write_lat_log) {
+ if (td->write_lat_log) {
setup_log(&td->slat_log);
setup_log(&td->clat_log);
}
- if (write_bw_log)
+ if (td->write_bw_log)
setup_log(&td->bw_log);
if (td->name[0] == '\0')
fgetpos(f, &off);
continue;
}
+ if (!check_strstore(p, "filename", tmpbuf)) {
+ td->filename = strdup(tmpbuf);
+ fgetpos(f, &off);
+ continue;
+ }
if (!check_strstore(p, "name", tmpbuf)) {
snprintf(td->name, sizeof(td->name)-1, "%s%d", tmpbuf, td->thread_number);
fgetpos(f, &off);
fgetpos(f, &off);
continue;
}
+ if (!check_strset(p, "write_bw_log")) {
+ td->write_bw_log = 1;
+ fgetpos(f, &off);
+ continue;
+ }
+ if (!check_strset(p, "write_lat_log")) {
+ td->write_lat_log = 1;
+ fgetpos(f, &off);
+ continue;
+ }
if (!check_strstore(p, "iolog", tmpbuf)) {
if (td->write_iolog) {
log_err("fio: read iolog overrides given write_iolog\n");
def_thread.rand_repeatable = DEF_RAND_REPEAT;
def_thread.nr_files = DEF_NR_FILES;
def_thread.unlink = DEF_UNLINK;
+ def_thread.write_bw_log = write_bw_log;
+ def_thread.write_lat_log = write_lat_log;
#ifdef FIO_HAVE_DISK_UTIL
def_thread.do_disk_util = 1;
#endif