Add support for 'bssplit' option, fine grained block size contrl

From the HOWTO addition:

bssplit=str	Sometimes you want even finer grained control of the
		block sizes issued, not just an even split between them.
		This option allows you to weight various block sizes,
		so that you are able to define a specific amount of
		block sizes issued. The format for this option is:

			bssplit=blocksize/percentage:blocksize/percentage

		for as many block sizes as needed. So if you want to define
		a workload that has 50% 64k blocks, 10% 4k blocks, and
		40% 32k blocks, you would write:

			bssplit=4k/10:64k/50:32k/40

		Ordering does not matter. If the percentage is left blank,
		fio will fill in the remaining values evenly. So a bssplit
		option like this one:

			bssplit=4k/50:1k/:32k/

		would have 50% 4k ios, and 25% 1k and 32k ios. The percentages
		always add up to 100, if bssplit is given a range that adds
		up to more, it will error out.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/fio.h b/fio.h
index ca9fede..ca6e290 100644
--- a/fio.h
+++ b/fio.h
@@ -373,6 +373,11 @@
 	unsigned long total_run_time;
 };
 
+struct bssplit {
+	unsigned int bs;
+	unsigned char perc;
+};
+
 struct thread_options {
 	int pad;
 	char *description;
@@ -395,6 +400,8 @@
 	unsigned int bs[2];
 	unsigned int min_bs[2];
 	unsigned int max_bs[2];
+	struct bssplit *bssplit;
+	unsigned int bssplit_nr;
 
 	unsigned int nr_files;
 	unsigned int open_files;