[PATCH] Document/comment fio.h
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/fio.h b/fio.h
index b396450..ddf6694 100644
--- a/fio.h
+++ b/fio.h
@@ -24,6 +24,9 @@
DDIR_SYNC,
};
+/*
+ * Use for maintaining statistics
+ */
struct io_stat {
unsigned long max_val;
unsigned long min_val;
@@ -33,18 +36,27 @@
double S;
};
+/*
+ * A single data sample
+ */
struct io_sample {
unsigned long time;
unsigned long val;
enum fio_ddir ddir;
};
+/*
+ * Dynamically growing data sample log
+ */
struct io_log {
unsigned long nr_samples;
unsigned long max_samples;
struct io_sample *log;
};
+/*
+ * When logging io actions, this matches a single sent io_u
+ */
struct io_piece {
struct list_head list;
struct fio_file *file;
@@ -71,10 +83,17 @@
struct timeval start_time;
struct timeval issue_time;
+ /*
+ * Allocated/set buffer and length
+ */
void *buf;
unsigned int buflen;
unsigned long long offset;
+ /*
+ * IO engine state, may be different from above when we get
+ * partial transfers / residual data counts
+ */
void *xfer_buf;
unsigned int xfer_buflen;
@@ -99,11 +118,14 @@
#define FIO_HDR_MAGIC 0xf00baaef
enum {
- VERIFY_NONE = 0,
- VERIFY_MD5,
- VERIFY_CRC32,
+ VERIFY_NONE = 0, /* no verification */
+ VERIFY_MD5, /* md5 sum data blocks */
+ VERIFY_CRC32, /* crc32 sum data blocks */
};
+/*
+ * A header structure associated with each checksummed data block
+ */
struct verify_header {
unsigned int fio_magic;
unsigned int len;
@@ -136,20 +158,24 @@
* The type of object we are working on
*/
enum fio_filetype {
- FIO_TYPE_FILE = 1,
- FIO_TYPE_BD,
- FIO_TYPE_CHAR,
+ FIO_TYPE_FILE = 1, /* plain file */
+ FIO_TYPE_BD, /* block device */
+ FIO_TYPE_CHAR, /* character device */
};
enum fio_ioengine_flags {
- FIO_SYNCIO = 1 << 0,
- FIO_CPUIO = 1 << 1,
- FIO_MMAPIO = 1 << 2,
- FIO_RAWIO = 1 << 3,
- FIO_NETIO = 1 << 4,
- FIO_NULLIO = 1 << 5,
+ FIO_SYNCIO = 1 << 0, /* io engine has synchronous ->queue */
+ FIO_CPUIO = 1 << 1, /* cpu burner, doesn't do real io */
+ FIO_MMAPIO = 1 << 2, /* uses memory mapped io */
+ FIO_RAWIO = 1 << 3, /* some sort of direct/raw io */
+ FIO_NETIO = 1 << 4, /* networked io */
+ FIO_NULLIO = 1 << 5, /* no real data transfer (cpu/null) */
};
+/*
+ * Each thread_data structure has a number of files associated with it,
+ * this structure holds state information for a single file.
+ */
struct fio_file {
/*
* A file may not be a file descriptor, let the io engine decide
@@ -166,12 +192,14 @@
unsigned long long last_pos;
unsigned long long last_completed_pos;
+ /*
+ * block map for random io
+ */
unsigned long *file_map;
unsigned int num_maps;
+ unsigned int last_free_lookup;
unsigned int unlink;
-
- unsigned int last_free_lookup;
};
/*
@@ -409,6 +437,9 @@
return 0;
}
+/*
+ * Disk utils as read in /sys/block/<dev>/stat
+ */
struct disk_util_stat {
unsigned ios[2];
unsigned merges[2];
@@ -418,6 +449,9 @@
unsigned time_in_queue;
};
+/*
+ * Per-device disk util management
+ */
struct disk_util {
struct list_head list;
@@ -432,6 +466,9 @@
struct timeval time;
};
+/*
+ * Used for passing io_u completion data
+ */
struct io_completion_data {
int nr; /* input */