Missing text in iodepth_batch* help entries
[fio.git] / filesetup.c
index 60eaeb057a7e0a144ee27fccd1b1f2da49fbe0ac..464c0f2018f51672f88cdd2bd3ced44c8bceda4e 100644 (file)
@@ -68,11 +68,13 @@ static int extend_file(struct thread_data *td, struct fio_file *f)
                goto err;
        }
 
+#ifdef FIO_HAVE_FALLOCATE
        dprint(FD_FILE, "fallocate file %s, size %llu\n", f->file_name,
                                                        f->real_file_size);
        r = posix_fallocate(f->fd, 0, f->real_file_size);
        if (r < 0)
-               td_verror(td, -r, "posix_fallocate");
+               log_err("fio: posix_fallocate fails: %s\n", strerror(-r));
+#endif
 
        b = malloc(td->o.max_bs[DDIR_WRITE]);
        memset(b, 0, td->o.max_bs[DDIR_WRITE]);
@@ -119,12 +121,12 @@ err:
 
 static unsigned long long get_rand_file_size(struct thread_data *td)
 {
-       unsigned long long ret, size_d;
+       unsigned long long ret, sized;
        long r;
 
        r = os_random_long(&td->file_size_state);
-       size_d = td->o.file_size_high - td->o.file_size_low;
-       ret = (unsigned long long) ((double) size_d * (r / (RAND_MAX + 1.0)));
+       sized = td->o.file_size_high - td->o.file_size_low;
+       ret = (unsigned long long) ((double) sized * (r / (OS_RAND_MAX + 1.0)));
        ret += td->o.file_size_low;
        ret -= (ret % td->o.rw_min_bs);
        return ret;
@@ -541,8 +543,10 @@ int setup_files(struct thread_data *td)
         */
        if (need_extend) {
                temp_stall_ts = 1;
-               log_info("%s: Laying out IO file(s) (%u file(s) / %LuMiB)\n",
-                       td->o.name, need_extend, extend_size >> 20);
+               if (!terse_output)
+                       log_info("%s: Laying out IO file(s) (%u file(s) /"
+                                " %LuMiB)\n", td->o.name, need_extend,
+                                       extend_size >> 20);
 
                for_each_file(td, f, i) {
                        unsigned long long old_len, extend_len;
@@ -601,7 +605,7 @@ 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;
-               f->file_map = smalloc(num_maps * sizeof(long));
+               f->file_map = smalloc(num_maps * sizeof(int));
                if (f->file_map) {
                        f->num_maps = num_maps;
                        continue;
@@ -645,6 +649,7 @@ void close_and_free_files(struct thread_data *td)
                }
 
                td_io_close_file(td, f);
+               remove_file_hash(f);
 
                sfree(f->file_name);
                f->file_name = NULL;
@@ -692,6 +697,11 @@ int add_file(struct thread_data *td, const char *fname)
        dprint(FD_FILE, "add file %s\n", fname);
 
        f = smalloc(sizeof(*f));
+       if (!f) {
+               log_err("fio: smalloc OOM\n");
+               assert(0);
+       }
+               
        f->fd = -1;
 
        dprint(FD_FILE, "resize file array to %d files\n", cur_files + 1);
@@ -710,7 +720,11 @@ int add_file(struct thread_data *td, const char *fname)
 
        sprintf(file_name + len, "%s", fname);
        f->file_name = smalloc_strdup(file_name);
-
+       if (!f->file_name) {
+               log_err("fio: smalloc OOM\n");
+               assert(0);
+       }
+       
        get_file_type(f);
 
        switch (td->o.file_lock_mode) {
@@ -903,9 +917,20 @@ void dup_files(struct thread_data *td, struct thread_data *org)
                struct fio_file *__f;
 
                __f = smalloc(sizeof(*__f));
-
-               if (f->file_name)
+               if (!__f) {
+                       log_err("fio: smalloc OOM\n");
+                       assert(0);
+               }
+       
+               if (f->file_name) {
                        __f->file_name = smalloc_strdup(f->file_name);
+                       if (!__f->file_name) {
+                               log_err("fio: smalloc OOM\n");
+                               assert(0);
+                       }
+       
+                       __f->filetype = f->filetype;
+               }
 
                td->files[i] = __f;
        }