projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
implement zoned random I/O testing support
[fio.git]
/
io_u.c
diff --git
a/io_u.c
b/io_u.c
index 1aa418c7554b37babcf2682df1030f390438b428..703d1e85e45ad570715d237bd3dc96fccff6f020 100644
(file)
--- a/
io_u.c
+++ b/
io_u.c
@@
-114,6
+114,9
@@
static unsigned long long last_block(struct thread_data *td, struct fio_file *f,
if (max_size > f->real_file_size)
max_size = f->real_file_size;
if (max_size > f->real_file_size)
max_size = f->real_file_size;
+ if (td->o.zone_range)
+ max_size = td->o.zone_range;
+
max_blocks = max_size / (unsigned long long) td->o.ba[ddir];
if (!max_blocks)
return 0;
max_blocks = max_size / (unsigned long long) td->o.ba[ddir];
if (!max_blocks)
return 0;
@@
-656,7
+659,8
@@
static int fill_io_u(struct thread_data *td, struct io_u *io_u)
*/
if (td->zone_bytes >= td->o.zone_size) {
td->zone_bytes = 0;
*/
if (td->zone_bytes >= td->o.zone_size) {
td->zone_bytes = 0;
- io_u->file->last_pos += td->o.zone_skip;
+ io_u->file->file_offset += td->o.zone_range + td->o.zone_skip;
+ io_u->file->last_pos = io_u->file->file_offset;
td->io_skip_bytes += td->o.zone_skip;
}
td->io_skip_bytes += td->o.zone_skip;
}