filesetup: Initialize all members of struct fio_file
[fio.git] / filesetup.c
index 3cda60630d5d1f54ad1a7fa108b377e1da7c444e..1a187ff2648d35c933740852751cd147c2ec0a36 100644 (file)
@@ -20,8 +20,6 @@
 #include <linux/falloc.h>
 #endif
 
-static int root_warn;
-
 static FLIST_HEAD(filename_list);
 
 /*
@@ -516,10 +514,9 @@ static int __file_invalidate_cache(struct thread_data *td, struct fio_file *f,
                        ret = blockdev_invalidate_cache(f);
                }
                if (ret < 0 && errno == EACCES && geteuid()) {
-                       if (!root_warn) {
+                       if (!fio_did_warn(FIO_WARN_ROOT_FLUSH)) {
                                log_err("fio: only root may flush block "
                                        "devices. Cache flush bypassed!\n");
-                               root_warn = 1;
                        }
                        ret = 0;
                }
@@ -1039,7 +1036,7 @@ int setup_files(struct thread_data *td)
                if (f->io_size == -1ULL)
                        total_size = -1ULL;
                else {
-                        if (o->size_percent) {
+                        if (o->size_percent && o->size_percent != 100) {
                                uint64_t file_size;
 
                                file_size = f->io_size + f->file_offset;
@@ -1484,7 +1481,7 @@ static struct fio_file *alloc_new_file(struct thread_data *td)
        if (td_ioengine_flagged(td, FIO_NOFILEHASH))
                f = calloc(1, sizeof(*f));
        else
-               f = smalloc(sizeof(*f));
+               f = scalloc(1, sizeof(*f));
        if (!f) {
                assert(0);
                return NULL;