Add buffer_compress_chunk option

Instead of doing bs/2 of incompressible and zeroed data for a 50%
compression setting, use the smaller chunk size specified by
this option.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --git a/fio.h b/fio.h
index 7443bc0..4afdd2d 100644
--- a/fio.h
+++ b/fio.h
@@ -195,6 +195,7 @@
 	unsigned int refill_buffers;
 	unsigned int scramble_buffers;
 	unsigned int compress_percentage;
+	unsigned int compress_chunk;
 	unsigned int time_based;
 	unsigned int disable_lat;
 	unsigned int disable_clat;
diff --git a/io_u.c b/io_u.c
index ca33e58..a0020d2 100644
--- a/io_u.c
+++ b/io_u.c
@@ -1544,8 +1544,11 @@
 		unsigned int perc = td->o.compress_percentage;
 
 		if (perc) {
+			unsigned int seg = min_write;
+
+			seg = min(min_write, td->o.compress_chunk);
 			fill_random_buf_percentage(&td->buf_state, io_u->buf,
-						perc, min_write, max_bs);
+						perc, seg, max_bs);
 		} else
 			fill_random_buf(&td->buf_state, io_u->buf, max_bs);
 	} else
diff --git a/options.c b/options.c
index 8034cd7..0680659 100644
--- a/options.c
+++ b/options.c
@@ -2022,6 +2022,12 @@
 		.help	= "How compressible the buffer is (approximately)",
 	},
 	{
+		.name	= "buffer_compress_chunk",
+		.type	= FIO_OPT_INT,
+		.off1	= td_var_offset(compress_chunk),
+		.help	= "Size of compressible region in buffer",
+	},
+	{
 		.name	= "clat_percentiles",
 		.type	= FIO_OPT_BOOL,
 		.off1	= td_var_offset(clat_percentiles),