unsigned char sequential;
unsigned char odirect;
- unsigned char create_file;
unsigned char invalidate_cache;
unsigned char create_serialize;
unsigned char create_fsync;
unsigned char do_disk_util;
unsigned char override_sync;
unsigned char rand_repeatable;
+ unsigned char write_lat_log;
+ unsigned char write_bw_log;
unsigned int bs;
unsigned int min_bs;
extern void put_io_u(struct thread_data *, struct io_u *);
extern int rate_quit;
-extern int write_lat_log;
-extern int write_bw_log;
extern int exitall_on_terminate;
extern int thread_number;
extern int shm_id;
*/
extern void close_files(struct thread_data *);
extern int setup_files(struct thread_data *);
+extern int file_invalidate_cache(struct thread_data *, struct fio_file *);
/*
* ETA/status stuff
TD_REAPED,
};
+/*
+ * Verify helpers
+ */
+extern void populate_verify_io_u(struct thread_data *, struct io_u *);
+extern int get_next_verify(struct thread_data *td, struct io_u *);
+extern int do_io_u_verify(struct thread_data *, struct io_u **);
+
/*
* This is a pretty crappy semaphore implementation, but with the use that fio
* has (just signalling start/go conditions), it doesn't have to be better.
*/
#define fio_unused __attribute((__unused__))
+#define for_each_td(td, i) \
+ for ((i) = 0, (td) = &threads[0]; (i) < (int) thread_number; (i)++, (td)++)
#define for_each_file(td, f, i) \
- for ((i) = 0, (f) = &(td)->files[0]; (i) < (td)->nr_files; (i)++, (f) = &(td)->files[(i)])
+ for ((i) = 0, (f) = &(td)->files[0]; (i) < (int) (td)->nr_files; (i)++, (f)++)
#endif