[PATCH] Fix random_map
authorJens Axboe <jens.axboe@oracle.com>
Thu, 2 Nov 2006 19:10:33 +0000 (20:10 +0100)
committerJens Axboe <jens.axboe@oracle.com>
Thu, 2 Nov 2006 19:10:33 +0000 (20:10 +0100)
If alignment was unlucky, we would underestimate the num_maps entry
by 1.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
init.c

diff --git a/init.c b/init.c
index b004d89012bc44156ef28f1affc2d5329af8e999..3532c49d968a7436699b8c9a3e75d9d5ed0d2a2e 100644 (file)
--- a/init.c
+++ b/init.c
@@ -695,7 +695,7 @@ int init_random_state(struct thread_data *td)
        if (!td->norandommap) {
                for_each_file(td, f, i) {
                        blocks = (f->file_size + td->min_bs - 1) / td->min_bs;
        if (!td->norandommap) {
                for_each_file(td, f, i) {
                        blocks = (f->file_size + td->min_bs - 1) / td->min_bs;
-                       num_maps = blocks / BLOCKS_PER_MAP;
+                       num_maps = (blocks + BLOCKS_PER_MAP-1)/ BLOCKS_PER_MAP;
                        f->file_map = malloc(num_maps * sizeof(long));
                        f->num_maps = num_maps;
                        memset(f->file_map, 0, num_maps * sizeof(long));
                        f->file_map = malloc(num_maps * sizeof(long));
                        f->num_maps = num_maps;
                        memset(f->file_map, 0, num_maps * sizeof(long));