X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=filesetup.c;h=d208a69e3d283abb8c65003d82978c5437524979;hp=75136ff32fcc7e4409746a981d09f12b79313aef;hb=3e93fc256cb4156518ec9720cda0a3d9c777c6f8;hpb=942a851a366a04c36233c9a64500ede32bac8031 diff --git a/filesetup.c b/filesetup.c index 75136ff3..d208a69e 100644 --- a/filesetup.c +++ b/filesetup.c @@ -264,7 +264,7 @@ error: return ret; } -static unsigned long long get_rand_file_size(struct thread_data *td) +unsigned long long get_rand_file_size(struct thread_data *td) { unsigned long long ret, sized; uint64_t frand_max; @@ -329,7 +329,7 @@ static int char_size(struct thread_data *td, struct fio_file *f) int r; if (td->io_ops->open_file(td, f)) { - log_err("fio: failed opening blockdev %s for size check\n", + log_err("fio: failed opening chardev %s for size check\n", f->file_name); return 1; } @@ -414,7 +414,7 @@ static int __file_invalidate_cache(struct thread_data *td, struct fio_file *f, errval = ret; } else if (f->filetype == FIO_TYPE_FILE) { ret = posix_fadvise(f->fd, off, len, POSIX_FADV_DONTNEED); - if (ret < 0) + if (ret) errval = ret; } else if (f->filetype == FIO_TYPE_BD) { int retry_count = 0; @@ -761,12 +761,16 @@ static unsigned long long get_fs_free_counts(struct thread_data *td) uint64_t get_start_offset(struct thread_data *td, struct fio_file *f) { struct thread_options *o = &td->o; + uint64_t offset; if (o->file_append && f->filetype == FIO_TYPE_FILE) return f->real_file_size; - return td->o.start_offset + - td->subjob_number * td->o.offset_increment; + offset = td->o.start_offset + td->subjob_number * td->o.offset_increment; + if (offset % td_max_bs(td)) + offset -= (offset % td_max_bs(td)); + + return offset; } /* @@ -809,6 +813,7 @@ int setup_files(struct thread_data *td) */ total_size = 0; for_each_file(td, f, i) { + f->fileno = i; if (f->real_file_size == -1ULL) total_size = -1ULL; else @@ -889,8 +894,10 @@ int setup_files(struct thread_data *td) if (f->io_size == -1ULL) total_size = -1ULL; else { - if (o->size_percent) - f->io_size = (f->io_size * o->size_percent) / 100; + if (o->size_percent) { + f->io_size = (f->io_size * o->size_percent) / 100; + f->io_size -= (f->io_size % td_min_bs(td)); + } total_size += f->io_size; } @@ -1328,7 +1335,8 @@ int add_file(struct thread_data *td, const char *fname, int numjob, int inc) dprint(FD_FILE, "add file %s\n", fname); if (td->o.directory) - len = set_name_idx(file_name, PATH_MAX, td->o.directory, numjob); + len = set_name_idx(file_name, PATH_MAX, td->o.directory, numjob, + td->o.unique_filename); sprintf(file_name + len, "%s", fname);