Drop obsolete comment on a race condition
[fio.git] / filesetup.c
index c6ef3bf2744f52a70e8bf845a65d4877ed7e8e4b..e9976eb17a879ee3c98f51f45dc3b0746f23f3f5 100644 (file)
@@ -370,15 +370,17 @@ static int get_file_size(struct thread_data *td, struct fio_file *f)
 
        if (f->filetype == FIO_TYPE_FILE)
                ret = file_size(td, f);
-       else if (f->filetype == FIO_TYPE_BD)
+       else if (f->filetype == FIO_TYPE_BLOCK)
                ret = bdev_size(td, f);
        else if (f->filetype == FIO_TYPE_CHAR)
                ret = char_size(td, f);
        else
-               f->real_file_size = -1;
+               f->real_file_size = -1ULL;
 
-       if (ret)
+       if (ret) {
+               f->real_file_size = -1ULL;
                return ret;
+       }
 
        if (f->file_offset > f->real_file_size) {
                log_err("%s: offset extends end (%llu > %llu)\n", td->o.name,
@@ -420,7 +422,7 @@ static int __file_invalidate_cache(struct thread_data *td, struct fio_file *f,
                ret = posix_fadvise(f->fd, off, len, POSIX_FADV_DONTNEED);
                if (ret)
                        errval = ret;
-       } else if (f->filetype == FIO_TYPE_BD) {
+       } else if (f->filetype == FIO_TYPE_BLOCK) {
                int retry_count = 0;
 
                ret = blockdev_invalidate_cache(f);
@@ -498,9 +500,6 @@ int file_lookup_open(struct fio_file *f, int flags)
        __f = lookup_file_hash(f->file_name);
        if (__f) {
                dprint(FD_FILE, "found file in hash %s\n", f->file_name);
-               /*
-                * racy, need the __f->lock locked
-                */
                f->lock = __f->lock;
                from_hash = 1;
        } else {
@@ -709,7 +708,7 @@ static unsigned long long get_fs_free_counts(struct thread_data *td)
                struct stat sb;
                char buf[256];
 
-               if (f->filetype == FIO_TYPE_BD || f->filetype == FIO_TYPE_CHAR) {
+               if (f->filetype == FIO_TYPE_BLOCK || f->filetype == FIO_TYPE_CHAR) {
                        if (f->real_file_size != -1ULL)
                                ret += f->real_file_size;
                        continue;
@@ -948,9 +947,8 @@ int setup_files(struct thread_data *td)
        if (need_extend) {
                temp_stall_ts = 1;
                if (output_format & FIO_OUTPUT_NORMAL)
-                       log_info("%s: Laying out IO file(s) (%u file(s) /"
-                                " %lluMB)\n", o->name, need_extend,
-                                       extend_size >> 20);
+                       log_info("%s: Laying out IO file(s) (%u file(s) / %lluMiB)\n",
+                                o->name, need_extend, extend_size >> 20);
 
                for_each_file(td, f, i) {
                        unsigned long long old_len = -1ULL, extend_len = -1ULL;
@@ -1098,7 +1096,7 @@ static int check_rand_gen_limits(struct thread_data *td, struct fio_file *f,
        if (!fio_option_is_set(&td->o, random_generator)) {
                log_info("fio: Switching to tausworthe64. Use the "
                         "random_generator= option to get rid of this "
-                        " warning.\n");
+                        "warning.\n");
                td->o.random_generator = FIO_RAND_GEN_TAUSWORTHE64;
                return 0;
        }
@@ -1229,12 +1227,12 @@ static void get_file_type(struct fio_file *f)
        /* \\.\ is the device namespace in Windows, where every file is
         * a block device */
        if (strncmp(f->file_name, "\\\\.\\", 4) == 0)
-               f->filetype = FIO_TYPE_BD;
+               f->filetype = FIO_TYPE_BLOCK;
 #endif
 
        if (!stat(f->file_name, &sb)) {
                if (S_ISBLK(sb.st_mode))
-                       f->filetype = FIO_TYPE_BD;
+                       f->filetype = FIO_TYPE_BLOCK;
                else if (S_ISCHR(sb.st_mode))
                        f->filetype = FIO_TYPE_CHAR;
                else if (S_ISFIFO(sb.st_mode))
@@ -1242,12 +1240,14 @@ static void get_file_type(struct fio_file *f)
        }
 }
 
-static bool __is_already_allocated(const char *fname)
+static bool __is_already_allocated(const char *fname, bool set)
 {
        struct flist_head *entry;
+       bool ret;
 
-       if (flist_empty(&filename_list))
-               return false;
+       ret = file_bloom_exists(fname, set);
+       if (!ret)
+               return ret;
 
        flist_for_each(entry, &filename_list) {
                struct file_name *fn;
@@ -1266,7 +1266,7 @@ static bool is_already_allocated(const char *fname)
        bool ret;
 
        fio_file_hash_lock();
-       ret = __is_already_allocated(fname);
+       ret = __is_already_allocated(fname, false);
        fio_file_hash_unlock();
 
        return ret;
@@ -1280,7 +1280,7 @@ static void set_already_allocated(const char *fname)
        fn->filename = strdup(fname);
 
        fio_file_hash_lock();
-       if (!__is_already_allocated(fname)) {
+       if (!__is_already_allocated(fname, true)) {
                flist_add_tail(&fn->list, &filename_list);
                fn = NULL;
        }
@@ -1317,7 +1317,6 @@ static struct fio_file *alloc_new_file(struct thread_data *td)
 
        f = smalloc(sizeof(*f));
        if (!f) {
-               log_err("fio: smalloc OOM\n");
                assert(0);
                return NULL;
        }
@@ -1400,10 +1399,8 @@ int add_file(struct thread_data *td, const char *fname, int numjob, int inc)
                f->real_file_size = -1ULL;
 
        f->file_name = smalloc_strdup(file_name);
-       if (!f->file_name) {
-               log_err("fio: smalloc OOM\n");
+       if (!f->file_name)
                assert(0);
-       }
 
        get_file_type(f);
 
@@ -1606,10 +1603,8 @@ void dup_files(struct thread_data *td, struct thread_data *org)
 
                if (f->file_name) {
                        __f->file_name = smalloc_strdup(f->file_name);
-                       if (!__f->file_name) {
-                               log_err("fio: smalloc OOM\n");
+                       if (!__f->file_name)
                                assert(0);
-                       }
 
                        __f->filetype = f->filetype;
                }