options: force refill_buffers with pattern and any reads
[fio.git] / options.c
index 85574d7f818a2c33a9fc534d74793431914a4f14..b489e90210ae008be47b427195242a56272daa90 100644 (file)
--- a/options.c
+++ b/options.c
@@ -1306,8 +1306,17 @@ static int str_buffer_pattern_cb(void *data, const char *input)
 
        assert(ret != 0);
        td->o.buffer_pattern_bytes = ret;
 
        assert(ret != 0);
        td->o.buffer_pattern_bytes = ret;
-       if (!td->o.compress_percentage)
+
+       /*
+        * If this job is doing any reading or has compression set,
+        * ensure that we refill buffers for writes or we could be
+        * invalidating the pattern through reads.
+        */
+       if (!td->o.compress_percentage && !td_read(td))
                td->o.refill_buffers = 0;
                td->o.refill_buffers = 0;
+       else
+               td->o.refill_buffers = 1;
+
        td->o.scramble_buffers = 0;
        td->o.zero_buffers = 0;
 
        td->o.scramble_buffers = 0;
        td->o.zero_buffers = 0;