#include "options.h"
#include "profile.h"
#include "time.h"
+#include "gettime.h"
#include "lib/getopt.h"
#include "lib/rand.h"
+#include "client.h"
#include "server.h"
#include "stat.h"
+#include "flow.h"
#ifdef FIO_HAVE_GUASI
#include <guasi.h>
unsigned int uid;
unsigned int gid;
+ int flow_id;
+ int flow;
+ int flow_watermark;
+ unsigned int flow_sleep;
+
unsigned int sync_file_range;
};
struct ioengine_ops *io_ops;
/*
- * Current IO depth and list of free and busy io_u's.
+ * Queue depth of io_u's that fio MIGHT do
*/
unsigned int cur_depth;
+
+ /*
+ * io_u's about to be committed
+ */
unsigned int io_u_queued;
+
+ /*
+ * io_u's submitted but not completed yet
+ */
+ unsigned int io_u_in_flight;
+
+ /*
+ * List of free and busy io_u's
+ */
struct flist_head io_u_freelist;
struct flist_head io_u_busylist;
struct flist_head io_u_requeues;
unsigned int total_err_count;
int first_error;
+ struct fio_flow *flow;
+
/*
* Can be overloaded by profiles
*/
/*
* Init/option functions
*/
+extern int __must_check fio_init_options(void);
extern int __must_check parse_options(int, char **);
extern int parse_jobs_ini(char *, int, int);
extern int parse_cmd_line(int, char **);
-extern int exec_run(void);
+extern int fio_backend(void);
extern void reset_fio_state(void);
+extern void clear_io_state(struct thread_data *);
extern int fio_options_parse(struct thread_data *, char **, int);
extern void fio_keywords_init(void);
extern int fio_cmd_option_parse(struct thread_data *, const char *, char *);
extern char *num2str(unsigned long, int, int, int);
extern int ioengine_load(struct thread_data *);
+extern unsigned long page_mask;
+extern unsigned long page_size;
+extern int initialize_fio(char *envp[]);
+
#define FIO_GETOPT_JOB 0x89000000
#define FIO_GETOPT_IOENGINE 0x98000000
#define FIO_NR_OPTIONS (FIO_MAX_OPTS + 128)