/*
* check if we need to lay the file out complete again. fio
* does that for operations involving reads, or for writes
/*
* check if we need to lay the file out complete again. fio
* does that for operations involving reads, or for writes
if (ftruncate(f->fd, f->real_file_size) == -1) {
td_verror(td, errno, "ftruncate");
goto err;
}
if (ftruncate(f->fd, f->real_file_size) == -1) {
td_verror(td, errno, "ftruncate");
goto err;
}
if (posix_fallocate(f->fd, 0, f->real_file_size) < 0) {
td_verror(td, errno, "posix_fallocate");
goto err;
if (posix_fallocate(f->fd, 0, f->real_file_size) < 0) {
td_verror(td, errno, "posix_fallocate");
goto err;
snprintf(buf, sizeof(buf) - 1, "open(%s)", f->file_name);
td_verror(td, __e, buf);
snprintf(buf, sizeof(buf) - 1, "open(%s)", f->file_name);
td_verror(td, __e, buf);
log_err("%s: you need to specify size=\n", td->o.name);
td_verror(td, EINVAL, "total_file_size");
return 1;
log_err("%s: you need to specify size=\n", td->o.name);
td_verror(td, EINVAL, "total_file_size");
return 1;
* zero, set it to the real file size.
*/
f->io_size = td->o.size / td->o.nr_files;
* zero, set it to the real file size.
*/
f->io_size = td->o.size / td->o.nr_files;
} else if (f->real_file_size < td->o.file_size_low ||
f->real_file_size > td->o.file_size_high) {
if (f->file_offset > td->o.file_size_low)
} else if (f->real_file_size < td->o.file_size_low ||
f->real_file_size > td->o.file_size_high) {
if (f->file_offset > td->o.file_size_low)
f->io_size = td->o.file_size_low - f->file_offset;
else
f->io_size = get_rand_file_size(td) - f->file_offset;
f->io_size = td->o.file_size_low - f->file_offset;
else
f->io_size = get_rand_file_size(td) - f->file_offset;
td->o.name, need_extend, extend_size >> 20);
for_each_file(td, f, i) {
td->o.name, need_extend, extend_size >> 20);
for_each_file(td, f, i) {
- td->total_io_size = td->o.size * td->o.loops;
+ /*
+ * iolog already set the total io size, if we read back
+ * stored entries.
+ */
+ if (!td->o.read_iolog_file)
+ td->total_io_size = td->o.size * td->o.loops;
- blocks = (f->real_file_size + td->o.rw_min_bs - 1) / td->o.rw_min_bs;
- num_maps = (blocks + BLOCKS_PER_MAP-1)/ BLOCKS_PER_MAP;
+ blocks = (f->real_file_size + td->o.rw_min_bs - 1) / (unsigned long long) td->o.rw_min_bs;
+ num_maps = (blocks + BLOCKS_PER_MAP-1)/ (unsigned long long) BLOCKS_PER_MAP;
f->file_map = malloc(num_maps * sizeof(long));
if (!f->file_map) {
log_err("fio: failed allocating random map. If running a large number of jobs, try the 'norandommap' option\n");
f->file_map = malloc(num_maps * sizeof(long));
if (!f->file_map) {
log_err("fio: failed allocating random map. If running a large number of jobs, try the 'norandommap' option\n");