#include "stat.h"
#include "flow.h"
-#ifdef FIO_HAVE_SOLARISAIO
+#ifdef CONFIG_SOLARISAIO
#include <sys/asynch.h>
#endif
char *name;
char *directory;
char *filename;
+ char *filename_format;
char *opendir;
char *ioengine;
enum td_ddir td_ddir;
unsigned int nr_files;
unsigned int open_files;
enum file_lock_mode file_lock_mode;
- unsigned int lockfile_batch;
unsigned int odirect;
unsigned int invalidate_cache;
unsigned int disable_clat;
unsigned int disable_slat;
unsigned int disable_bw;
+ unsigned int unified_rw_rep;
unsigned int gtod_reduce;
unsigned int gtod_cpu;
unsigned int gtod_offload;
unsigned int trim_zero;
unsigned long long trim_backlog;
unsigned int clat_percentiles;
- unsigned int overwrite_plist;
+ unsigned int percentile_precision; /* digits after decimal for percentiles */
fio_fp64_t percentile_list[FIO_IO_U_LIST_MAX_LEN];
char *read_iolog_file;
uint64_t stat_io_blocks[DDIR_RWDIR_CNT];
struct timeval iops_sample_time;
+ volatile int update_rusage;
+ struct fio_mutex *rusage_sem;
struct rusage ru_start;
struct rusage ru_end;
struct fio_file **files;
+ unsigned char *file_locks;
unsigned int files_size;
unsigned int files_index;
unsigned int nr_open_files;
/*
* Rate state
*/
- unsigned long long rate_bps[DDIR_RWDIR_CNT];
+ uint64_t rate_bps[DDIR_RWDIR_CNT];
long rate_pending_usleep[DDIR_RWDIR_CNT];
unsigned long rate_bytes[DDIR_RWDIR_CNT];
unsigned long rate_blocks[DDIR_RWDIR_CNT];
struct timeval lastrate[DDIR_RWDIR_CNT];
- unsigned long long total_io_size;
- unsigned long long fill_device_size;
+ uint64_t total_io_size;
+ uint64_t fill_device_size;
unsigned long io_issues[DDIR_RWDIR_CNT];
- unsigned long long io_blocks[DDIR_RWDIR_CNT];
- unsigned long long this_io_blocks[DDIR_RWDIR_CNT];
- unsigned long long io_bytes[DDIR_RWDIR_CNT];
- unsigned long long io_skip_bytes;
- unsigned long long this_io_bytes[DDIR_RWDIR_CNT];
- unsigned long long zone_bytes;
+ uint64_t io_blocks[DDIR_RWDIR_CNT];
+ uint64_t this_io_blocks[DDIR_RWDIR_CNT];
+ uint64_t io_bytes[DDIR_RWDIR_CNT];
+ uint64_t io_skip_bytes;
+ uint64_t this_io_bytes[DDIR_RWDIR_CNT];
+ uint64_t zone_bytes;
struct fio_mutex *mutex;
/*
int e = (err); \
(td)->error = e; \
if (!(td)->first_error) \
- snprintf(td->verror, sizeof(td->verror) - 1, "file:%s:%d, func=%s, error=%s", __FILE__, __LINE__, (func), (msg)); \
+ snprintf(td->verror, sizeof(td->verror), "file:%s:%d, func=%s, error=%s", __FILE__, __LINE__, (func), (msg)); \
} while (0)
extern uintptr_t page_mask, page_size;
extern int read_only;
extern int eta_print;
+extern int eta_new_line;
extern unsigned long done_secs;
extern char *job_section;
extern int fio_gtod_offload;
extern int nr_clients;
extern int log_syslog;
extern const char fio_version_string[];
-extern const fio_fp64_t def_percentile_list[FIO_IO_U_LIST_MAX_LEN];
extern struct thread_data *threads;
{
if (td->last_was_sync)
return 0;
- if (td->o.odirect)
- return 0;
if (td_write(td) || td_rw(td) || td->o.override_sync)
return 1;
extern void options_mem_dupe(void *data, struct fio_option *options);
extern void td_fill_rand_seeds(struct thread_data *);
extern void add_job_opts(const char **);
-extern char *num2str(unsigned long, int, int, int);
+extern char *num2str(unsigned long, int, int, int, int);
extern int ioengine_load(struct thread_data *);
#define FIO_GETOPT_JOB 0x89000000
return ret;
}
+static inline unsigned int td_max_bs(struct thread_data *td)
+{
+ unsigned int max_bs;
+
+ max_bs = max(td->o.max_bs[DDIR_READ], td->o.max_bs[DDIR_WRITE]);
+ return max(td->o.max_bs[DDIR_TRIM], max_bs);
+}
+
static inline int is_power_of_2(unsigned int val)
{
return (val != 0 && ((val & (val - 1)) == 0));