Add details of file number/size related options to HOWTO
[fio.git] / file.h
diff --git a/file.h b/file.h
index d5595c1671f9e7d0194e463604b353117230ccd8..611470cee0aee83a0c9e83962c7660edbbf3a236 100644 (file)
--- a/file.h
+++ b/file.h
@@ -15,7 +15,7 @@
  */
 enum fio_filetype {
        FIO_TYPE_FILE = 1,              /* plain file */
-       FIO_TYPE_BD,                    /* block device */
+       FIO_TYPE_BLOCK,                 /* block device */
        FIO_TYPE_CHAR,                  /* character device */
        FIO_TYPE_PIPE,                  /* pipe */
 };
@@ -39,13 +39,20 @@ enum file_lock_mode {
 };
 
 /*
- * roundrobin available files, or choose one at random, or do each one
- * serially.
+ * How fio chooses what file to service next. Choice of uniformly random, or
+ * some skewed random variants, or just sequentially go through them or
+ * roundrobing.
  */
 enum {
-       FIO_FSERVICE_RANDOM     = 1,
-       FIO_FSERVICE_RR         = 2,
-       FIO_FSERVICE_SEQ        = 3,
+       FIO_FSERVICE_RANDOM             = 1,
+       FIO_FSERVICE_RR                 = 2,
+       FIO_FSERVICE_SEQ                = 3,
+       __FIO_FSERVICE_NONUNIFORM       = 0x100,
+       FIO_FSERVICE_ZIPF               = __FIO_FSERVICE_NONUNIFORM | 4,
+       FIO_FSERVICE_PARETO             = __FIO_FSERVICE_NONUNIFORM | 5,
+       FIO_FSERVICE_GAUSS              = __FIO_FSERVICE_NONUNIFORM | 6,
+
+       FIO_FSERVICE_SHIFT              = 10,
 };
 
 /*
@@ -83,6 +90,7 @@ struct fio_file {
 
        /*
         * size of the file, offset into file, and io size from that offset
+        * (be aware io_size is different from thread_options::io_size)
         */
        uint64_t real_file_size;
        uint64_t file_offset;
@@ -97,6 +105,13 @@ struct fio_file {
        uint64_t first_write;
        uint64_t last_write;
 
+       /*
+        * Tracks the last iodepth number of completed writes, if data
+        * verification is enabled
+        */
+       uint64_t *last_write_comp;
+       unsigned int last_write_idx;
+
        /*
         * For use by the io engine
         */
@@ -180,6 +195,7 @@ extern int __must_check generic_close_file(struct thread_data *, struct fio_file
 extern int __must_check generic_get_file_size(struct thread_data *, struct fio_file *);
 extern int __must_check file_lookup_open(struct fio_file *f, int flags);
 extern int __must_check pre_read_files(struct thread_data *);
+extern unsigned long long get_rand_file_size(struct thread_data *td);
 extern int add_file(struct thread_data *, const char *, int, int);
 extern int add_file_exclusive(struct thread_data *, const char *);
 extern void get_file(struct fio_file *);
@@ -194,7 +210,8 @@ extern void dup_files(struct thread_data *, struct thread_data *);
 extern int get_fileno(struct thread_data *, const char *);
 extern void free_release_files(struct thread_data *);
 extern void filesetup_mem_free(void);
-void fio_file_reset(struct thread_data *, struct fio_file *);
-int fio_files_done(struct thread_data *);
+extern void fio_file_reset(struct thread_data *, struct fio_file *);
+extern bool fio_files_done(struct thread_data *);
+extern bool exists_and_not_regfile(const char *);
 
 #endif