[PATCH] Cleanups and 'td' size reduction
diff --git a/fio.h b/fio.h
index 09e56d6..66b70ef 100644
--- a/fio.h
+++ b/fio.h
@@ -100,15 +100,50 @@
 	unsigned long long agg[2];
 };
 
+enum fio_ddir {
+	DDIR_READ = 0,
+	DDIR_WRITE,
+};
+
+/*
+ * What type of allocation to use for io buffers
+ */
+enum fio_memtype {
+	MEM_MALLOC = 0,	/* ordinary malloc */
+	MEM_SHM,	/* use shared memory segments */
+	MEM_MMAP,	/* use anonynomous mmap */
+};
+
+/*
+ * The type of object we are working on
+ */
+enum fio_filetype {
+	FIO_TYPE_FILE = 1,
+	FIO_TYPE_BD,
+	FIO_TYPE_CHAR,
+};
+
+enum fio_iotype {
+	FIO_SYNCIO	= 1 << 0,
+	FIO_MMAPIO	= 1 << 1 | FIO_SYNCIO,
+	FIO_LIBAIO	= 1 << 2,
+	FIO_POSIXAIO	= 1 << 3,
+	FIO_SGIO	= 1 << 4,
+	FIO_SPLICEIO	= 1 << 5 | FIO_SYNCIO,
+};
+
+/*
+ * This describes a single thread/process executing a fio job.
+ */
 struct thread_data {
-	char name[64];
-	char file_name[256];
+	char name[32];
+	char *file_name;
 	char *directory;
 	char verror[80];
 	pthread_t thread;
 	int thread_number;
 	int groupid;
-	int filetype;
+	enum fio_filetype filetype;
 	int error;
 	int fd;
 	void *mmap;
@@ -118,38 +153,42 @@
 	volatile int terminate;
 	volatile int runstate;
 	volatile int old_runstate;
-	unsigned int ddir;
+	enum fio_ddir ddir;
 	unsigned int iomix;
 	unsigned int ioprio;
-	unsigned int sequential;
+
+	unsigned char sequential;
+	unsigned char odirect;
+	unsigned char create_file;
+	unsigned char invalidate_cache;
+	unsigned char create_serialize;
+	unsigned char create_fsync;
+	unsigned char end_fsync;
+	unsigned char sync_io;
+	unsigned char verify;
+	unsigned char use_thread;
+	unsigned char do_disk_util;
+	unsigned char override_sync;
+
 	unsigned int bs;
 	unsigned int min_bs;
 	unsigned int max_bs;
-	unsigned int odirect;
 	unsigned int thinktime;
 	unsigned int fsync_blocks;
 	unsigned int start_delay;
 	unsigned int timeout;
-	unsigned int io_engine;
-	unsigned int create_file;
+	enum fio_iotype io_engine;
 	unsigned int overwrite;
-	unsigned int invalidate_cache;
 	unsigned int bw_avg_time;
-	unsigned int create_serialize;
-	unsigned int create_fsync;
-	unsigned int end_fsync;
 	unsigned int loops;
 	unsigned long long file_size;
 	unsigned long long real_file_size;
 	unsigned long long file_offset;
 	unsigned long long zone_size;
 	unsigned long long zone_skip;
-	unsigned int sync_io;
-	unsigned int mem_type;
-	unsigned int verify;
+	enum fio_memtype mem_type;
 	unsigned int stonewall;
 	unsigned int numjobs;
-	unsigned int use_thread;
 	unsigned int iodepth;
 	os_cpu_mask_t cpumask;
 	unsigned int jobnum;
@@ -165,7 +204,6 @@
 	FILE *iolog_f;
 
 	char *sysfs_root;
-
 	char *ioscheduler;
 
 	os_random_state_t bsrange_state;
@@ -173,6 +211,10 @@
 
 	int shm_id;
 
+	/*
+	 * IO engine hooks, contains everything needed to submit an io_u
+	 * to any of the available IO engines.
+	 */
 	void *io_data;
 	char io_engine_name[16];
 	int (*io_prep)(struct thread_data *, struct io_u *);
@@ -183,10 +225,16 @@
 	void (*io_cleanup)(struct thread_data *);
 	int (*io_sync)(struct thread_data *);
 
+	/*
+	 * Current IO depth and list of free and busy io_u's.
+	 */
 	unsigned int cur_depth;
 	struct list_head io_u_freelist;
 	struct list_head io_u_busylist;
 
+	/*
+	 * Rate state
+	 */
 	unsigned int rate;
 	unsigned int ratemin;
 	unsigned int ratecycle;
@@ -206,6 +254,9 @@
 	unsigned long long last_pos;
 	volatile int mutex;
 
+	/*
+	 * State for random io, a bitmap of blocks done vs not done
+	 */
 	os_random_state_t random_state;
 	unsigned long *file_map;
 	unsigned int num_maps;
@@ -227,18 +278,21 @@
 	struct timeval start;	/* start of this loop */
 	struct timeval epoch;	/* time job was started */
 
+	/*
+	 * fio system usage accounting
+	 */
 	struct rusage ru_start;
 	struct rusage ru_end;
 	unsigned long usr_time;
 	unsigned long sys_time;
 	unsigned long ctx;
 
-	unsigned int do_disk_util;
-	unsigned int override_sync;
-
+	/*
+	 * read/write mixed workload state
+	 */
 	os_random_state_t rwmix_state;
 	struct timeval rwmix_switch;
-	int rwmix_ddir;
+	enum fio_ddir rwmix_ddir;
 
 	/*
 	 * Pre-run and post-run shell
@@ -246,6 +300,9 @@
 	char *exec_prerun;
 	char *exec_postrun;
 
+	/*
+	 * IO historic logs
+	 */
 	struct list_head io_hist_list;
 	struct list_head io_log_list;
 };
@@ -270,38 +327,6 @@
 
 extern struct thread_data *threads;
 
-enum {
-	DDIR_READ = 0,
-	DDIR_WRITE,
-};
-
-/*
- * What type of allocation to use for io buffers
- */
-enum {
-	MEM_MALLOC,	/* ordinary malloc */
-	MEM_SHM,	/* use shared memory segments */
-	MEM_MMAP,	/* use anonynomous mmap */
-};
-
-/*
- * The type of object we are working on
- */
-enum {
-	FIO_TYPE_FILE = 1,
-	FIO_TYPE_BD,
-	FIO_TYPE_CHAR,
-};
-
-enum {
-	FIO_SYNCIO	= 1 << 0,
-	FIO_MMAPIO	= 1 << 1 | FIO_SYNCIO,
-	FIO_LIBAIO	= 1 << 2,
-	FIO_POSIXAIO	= 1 << 3,
-	FIO_SGIO	= 1 << 4,
-	FIO_SPLICEIO	= 1 << 5 | FIO_SYNCIO,
-};
-
 #define td_read(td)		((td)->ddir == DDIR_READ)
 #define td_write(td)		((td)->ddir == DDIR_WRITE)
 #define td_rw(td)		((td)->iomix != 0)