Make random map allocation more resilient
authorJens Axboe <axboe@kernel.dk>
Thu, 2 Feb 2012 07:41:28 +0000 (08:41 +0100)
committerJens Axboe <axboe@kernel.dk>
Thu, 2 Feb 2012 07:41:28 +0000 (08:41 +0100)
Signed-off-by: Jens Axboe <axboe@kernel.dk>
filesetup.c

index 8f515923bcf9b25c725c9d9a3e94ed2ecb1711a3..d55af45404af36ab8d1204479d844d5525bc7adb 100644 (file)
@@ -849,11 +849,15 @@ int init_random_map(struct thread_data *td)
                                (unsigned long long) td->o.rw_min_bs;
                num_maps = (blocks + BLOCKS_PER_MAP - 1) /
                                (unsigned long long) BLOCKS_PER_MAP;
                                (unsigned long long) td->o.rw_min_bs;
                num_maps = (blocks + BLOCKS_PER_MAP - 1) /
                                (unsigned long long) BLOCKS_PER_MAP;
-               f->file_map = smalloc(num_maps * sizeof(unsigned long));
-               if (f->file_map) {
-                       f->num_maps = num_maps;
-                       continue;
-               }
+               if (num_maps == (unsigned long) num_maps) {
+                       f->file_map = smalloc(num_maps * sizeof(unsigned long));
+                       if (f->file_map) {
+                               f->num_maps = num_maps;
+                               continue;
+                       }
+               } else
+                       f->file_map = NULL;
+
                if (!td->o.softrandommap) {
                        log_err("fio: failed allocating random map. If running"
                                " a large number of jobs, try the 'norandommap'"
                if (!td->o.softrandommap) {
                        log_err("fio: failed allocating random map. If running"
                                " a large number of jobs, try the 'norandommap'"