Kill unused parameters
[fio.git] / fio.h
diff --git a/fio.h b/fio.h
index fe1a227d317649f52398565881edbce715e7c998..6f2c4c09810c3e1c379c8570db70384412ba274c 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -46,6 +46,12 @@ enum td_ddir {
        TD_DDIR_RANDRW          = TD_DDIR_RW | TD_DDIR_RAND,
 };
 
+enum file_lock_mode {
+       FILE_LOCK_NONE,
+       FILE_LOCK_EXCLUSIVE,
+       FILE_LOCK_READWRITE,
+};
+
 /*
  * Use for maintaining statistics
  */
@@ -309,6 +315,14 @@ struct fio_file {
 
        unsigned long long last_pos;
 
+       /*
+        * if io is protected by a semaphore, this is set
+        */
+       struct fio_mutex *lock;
+       void *lock_owner;
+       unsigned int lock_batch;
+       enum fio_ddir lock_ddir;
+
        /*
         * block map for random io
         */
@@ -407,6 +421,8 @@ struct thread_options {
 
        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;
@@ -430,6 +446,7 @@ struct thread_options {
        unsigned int write_lat_log;
        unsigned int write_bw_log;
        unsigned int norandommap;
+       unsigned int softrandommap;
        unsigned int bs_unaligned;
        unsigned int fsync_on_close;
 
@@ -581,8 +598,7 @@ struct thread_data {
         * read/write mixed workload state
         */
        os_random_state_t rwmix_state;
-       unsigned long long rwmix_bytes;
-       struct timeval rwmix_switch;
+       unsigned long rwmix_issues;
        enum fio_ddir rwmix_ddir;
        unsigned int ddir_nr;
 
@@ -667,6 +683,7 @@ extern unsigned long long mlock_size;
 extern unsigned long page_mask, page_size;
 extern int read_only;
 extern int eta_print;
+extern unsigned long done_secs;
 extern char *job_section;
 
 extern struct thread_data *threads;
@@ -675,6 +692,7 @@ extern struct thread_data *threads;
 #define td_write(td)           ((td)->o.td_ddir & TD_DDIR_WRITE)
 #define td_rw(td)              (((td)->o.td_ddir & TD_DDIR_RW) == TD_DDIR_RW)
 #define td_random(td)          ((td)->o.td_ddir & TD_DDIR_RAND)
+#define file_randommap(td, f)  (!(td)->o.norandommap && (f)->file_map)
 
 static inline void fio_ro_check(struct thread_data *td, struct io_u *io_u)
 {
@@ -682,9 +700,9 @@ static inline void fio_ro_check(struct thread_data *td, struct io_u *io_u)
 }
 
 #define BLOCKS_PER_MAP         (8 * sizeof(long))
-#define TO_MAP_BLOCK(td, f, b) (b)
-#define RAND_MAP_IDX(td, f, b) (TO_MAP_BLOCK(td, f, b) / BLOCKS_PER_MAP)
-#define RAND_MAP_BIT(td, f, b) (TO_MAP_BLOCK(td, f, b) & (BLOCKS_PER_MAP - 1))
+#define TO_MAP_BLOCK(f, b)     (b)
+#define RAND_MAP_IDX(f, b)     (TO_MAP_BLOCK(f, b) / BLOCKS_PER_MAP)
+#define RAND_MAP_BIT(f, b)     (TO_MAP_BLOCK(f, b) & (BLOCKS_PER_MAP - 1))
 
 #define MAX_JOBS       (1024)
 
@@ -739,6 +757,7 @@ enum file_log_act {
        FIO_LOG_ADD_FILE,
        FIO_LOG_OPEN_FILE,
        FIO_LOG_CLOSE_FILE,
+       FIO_LOG_UNLINK_FILE,
 };
 
 extern int __must_check read_iolog_get(struct thread_data *, struct io_u *);
@@ -746,6 +765,7 @@ extern void log_io_u(struct thread_data *, struct io_u *);
 extern void log_file(struct thread_data *, struct fio_file *, enum file_log_act);
 extern int __must_check init_iolog(struct thread_data *td);
 extern void log_io_piece(struct thread_data *, struct io_u *);
+extern void queue_io_piece(struct thread_data *, struct io_piece *);
 extern void prune_io_piece_log(struct thread_data *);
 extern void write_iolog_close(struct thread_data *);
 
@@ -810,8 +830,9 @@ extern int __must_check generic_close_file(struct thread_data *, struct fio_file
 extern int add_file(struct thread_data *, const char *);
 extern void get_file(struct fio_file *);
 extern int __must_check put_file(struct thread_data *, struct fio_file *);
-extern void lock_file(struct thread_data *, struct fio_file *);
-extern void unlock_file(struct fio_file *);
+extern void lock_file(struct thread_data *, struct fio_file *, enum fio_ddir);
+extern void unlock_file(struct thread_data *, struct fio_file *);
+extern void unlock_file_all(struct thread_data *, struct fio_file *);
 extern int add_dir_files(struct thread_data *, const char *);
 extern int init_random_map(struct thread_data *);
 extern void dup_files(struct thread_data *, struct thread_data *);
@@ -944,7 +965,10 @@ extern void close_ioengine(struct thread_data *);
 #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)->o.nr_files; (i)++, (f)++)
+       if ((td)->files_index)                                          \
+               for ((i) = 0, (f) = (td)->files[0];                     \
+                (i) < (td)->o.nr_files && ((f) = (td)->files[i]) != NULL; \
+                (i)++)
 
 #define fio_assert(td, cond)   do {    \
        if (!(cond)) {                  \