Move handling of possible values into the option parser

Eliminates the need for a callback for any FIO_OPT_STR type
option, unless it needs to do something there other than just
setting the variable.

The possible options are not in an array of value pairs, so we
can easily match an string option with an integer output value.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/fio.h b/fio.h
index 8880ea6..6abbd79 100644
--- a/fio.h
+++ b/fio.h
@@ -29,10 +29,13 @@
 };
 
 enum td_ddir {
-	TD_DDIR_READ	= 1 << 0,
-	TD_DDIR_WRITE	= 1 << 1,
-	TD_DDIR_RAND	= 1 << 2,
-	TD_DDIR_RW	= TD_DDIR_READ | TD_DDIR_WRITE,
+	TD_DDIR_READ		= 1 << 0,
+	TD_DDIR_WRITE		= 1 << 1,
+	TD_DDIR_RAND		= 1 << 2,
+	TD_DDIR_RW		= TD_DDIR_READ | TD_DDIR_WRITE,
+	TD_DDIR_RANDREAD	= TD_DDIR_READ | TD_DDIR_RAND,
+	TD_DDIR_RANDWRITE	= TD_DDIR_WRITE | TD_DDIR_READ,
+	TD_DDIR_RANDRW		= TD_DDIR_RW | TD_DDIR_RAND,
 };
 
 /*
@@ -274,6 +277,7 @@
  * This describes a single thread/process executing a fio job.
  */
 struct thread_data {
+	int pad;
 	char *description;
 	char *name;
 	char *directory;