projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fusion-aw: fixes
[fio.git]
/
filesetup.c
diff --git
a/filesetup.c
b/filesetup.c
index 9d3e06268fffc35786749ea0eb482d0f9bb7ce11..478bda8cb0331017b55574d8df67c09cd1151bed 100644
(file)
--- a/
filesetup.c
+++ b/
filesetup.c
@@
-709,7
+709,7
@@
static unsigned long long get_fs_free_counts(struct thread_data *td)
return ret;
}
return ret;
}
-u
nsigned long long
get_start_offset(struct thread_data *td)
+u
int64_t
get_start_offset(struct thread_data *td)
{
return td->o.start_offset +
(td->thread_number - 1) * td->o.offset_increment;
{
return td->o.start_offset +
(td->thread_number - 1) * td->o.offset_increment;
@@
-907,10
+907,12
@@
static int __init_rand_distribution(struct thread_data *td, struct fio_file *f)
{
unsigned int range_size, seed;
unsigned long nranges;
{
unsigned int range_size, seed;
unsigned long nranges;
+ uint64_t file_size;
range_size = min(td->o.min_bs[DDIR_READ], td->o.min_bs[DDIR_WRITE]);
range_size = min(td->o.min_bs[DDIR_READ], td->o.min_bs[DDIR_WRITE]);
+ file_size = min(f->real_file_size, f->io_size);
- nranges = (f
->real_f
ile_size + range_size - 1) / range_size;
+ nranges = (file_size + range_size - 1) / range_size;
seed = jhash(f->file_name, strlen(f->file_name), 0) * td->thread_number;
if (!td->o.rand_repeatable)
seed = jhash(f->file_name, strlen(f->file_name), 0) * td->thread_number;
if (!td->o.rand_repeatable)
@@
-954,7
+956,9
@@
int init_random_map(struct thread_data *td)
return 0;
for_each_file(td, f, i) {
return 0;
for_each_file(td, f, i) {
- blocks = (f->real_file_size + td->o.rw_min_bs - 1) /
+ uint64_t file_size = min(f->real_file_size, f->io_size);
+
+ blocks = (file_size + td->o.rw_min_bs - 1) /
(unsigned long long) td->o.rw_min_bs;
if (td->o.random_generator == FIO_RAND_GEN_LFSR) {
unsigned long seed;
(unsigned long long) td->o.rw_min_bs;
if (td->o.random_generator == FIO_RAND_GEN_LFSR) {
unsigned long seed;
@@
-1072,11
+1076,15
@@
int add_file(struct thread_data *td, const char *fname)
fio_file_reset(f);
if (td->files_size <= td->files_index) {
fio_file_reset(f);
if (td->files_size <= td->files_index) {
- int new_size = td->o.nr_files + 1;
+
unsigned
int new_size = td->o.nr_files + 1;
dprint(FD_FILE, "resize file array to %d files\n", new_size);
td->files = realloc(td->files, new_size * sizeof(f));
dprint(FD_FILE, "resize file array to %d files\n", new_size);
td->files = realloc(td->files, new_size * sizeof(f));
+ if (td->files == NULL) {
+ log_err("fio: realloc OOM\n");
+ assert(0);
+ }
td->files_size = new_size;
}
td->files[cur_files] = f;
td->files_size = new_size;
}
td->files[cur_files] = f;