Compression fixes

- memset() remainder of buffer instead of copying random segment.
  Provides more reliable compression (yes yes, you told me so).

- Allow 100 as well, just means full memset. Make that just set
  zero_buffers=1 instead, since we only need to do it once
  instead of for every write.

Signed-off-by: Jens Axboe <axboe@kernel.dk>

Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --git a/lib/rand.c b/lib/rand.c
index 66d0472..995035f 100644
--- a/lib/rand.c
+++ b/lib/rand.c
@@ -34,7 +34,6 @@
 */
 
 #include <string.h>
-#include <assert.h>
 #include "rand.h"
 #include "../hash.h"
 
@@ -95,10 +94,16 @@
 					 unsigned int percentage,
 					 unsigned int segment, unsigned int len)
 {
-	unsigned int this_len, rep_len;
 	unsigned long r = __rand(fs);
+	unsigned int this_len;
 
-	assert(segment <= len);
+	if (percentage == 100) {
+		memset(buf, 0, len);
+		return 0;
+	}
+
+	if (segment > len)
+		segment = len;
 
 	if (sizeof(int) != sizeof(long *))
 		r *= (unsigned long) __rand(fs);
@@ -116,16 +121,10 @@
 		len -= this_len;
 		buf += this_len;
 
-		/*
-		 * Now duplicate random chunk in rest of buf
-		 */
-		rep_len = segment - this_len;
-		if (rep_len > len)
-			rep_len = len;
+		if (this_len > len)
+			this_len = len;
 
-		memcpy(buf, buf + rep_len, rep_len);
-		buf += rep_len;
-		len -= rep_len;
+		memset(buf, 0, this_len);
 	}
 
 	return r;