X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=filesetup.c;h=eb28826698811058a317fa6544b92bd8f388a368;hp=fc9f3067226ee48276071af7343659a939cef43e;hb=7582368670f2025a1f810bd4ffb5ca91e278b66a;hpb=04d6530f6ecd50520e99732b0b6bb90f71ff131a diff --git a/filesetup.c b/filesetup.c index fc9f3067..eb288266 100644 --- a/filesetup.c +++ b/filesetup.c @@ -370,7 +370,7 @@ 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); @@ -420,7 +420,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); @@ -709,7 +709,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 +948,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 +1097,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 +1228,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 +1241,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 +1267,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 +1281,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; } @@ -1292,7 +1293,6 @@ static void set_already_allocated(const char *fname) } } - static void free_already_allocated(void) { struct flist_head *entry, *tmp; @@ -1318,7 +1318,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; } @@ -1401,10 +1400,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); @@ -1607,10 +1604,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; } @@ -1666,16 +1661,16 @@ void fio_file_reset(struct thread_data *td, struct fio_file *f) lfsr_reset(&f->lfsr, td->rand_seeds[FIO_RAND_BLOCK_OFF]); } -int fio_files_done(struct thread_data *td) +bool fio_files_done(struct thread_data *td) { struct fio_file *f; unsigned int i; for_each_file(td, f, i) if (!fio_file_done(f)) - return 0; + return false; - return 1; + return true; } /* free memory used in initialization phase only */