dedupe_percentage should work even if compress_percentage is not set
authorVasily Tarasov <tarasov@vasily.name>
Wed, 28 Jan 2015 16:10:30 +0000 (09:10 -0700)
committerJens Axboe <axboe@fb.com>
Wed, 28 Jan 2015 16:10:30 +0000 (09:10 -0700)
Currently dedupe_percentage option does not work properly if
compress_percentage is not set. This can be easily demonstrated using
the following job file:

[job-/dev/dm-0]
filename=/dev/dm-0
rw=randwrite
blocksize=4096
direct=1
ioengine=libaio
iodepth=32
dedupe_percentage=50
time_based=1
runtime=5
numjobs=1

All writes will contain zeroes for the above job file.

The problem is in fill_io_buffer() function that switches dedupe random
state only if o->compress_percentage is set.

This patch updates the condition appropriately in fill_io_buffer()
appropriately.

Signed-off-by: Vasily Tarasov <tarasov@vasily.name>
Signed-off-by: Jens Axboe <axboe@fb.com>
io_u.c

diff --git a/io_u.c b/io_u.c
index 77a3abf75437e7e27290cf0e32fc4db7cb3bc7ce..f61fee8cb32240d2d85929eb0d131b009ec0d47d 100644 (file)
--- a/io_u.c
+++ b/io_u.c
@@ -1869,7 +1869,7 @@ void fill_io_buffer(struct thread_data *td, void *buf, unsigned int min_write,
 {
        struct thread_options *o = &td->o;
 
-       if (o->compress_percentage) {
+       if (o->compress_percentage || o->dedupe_percentage) {
                unsigned int perc = td->o.compress_percentage;
                struct frand_state *rs;
                unsigned int left = max_bs;