mask = -1UL;
else
mask = ((1UL << this_blocks) - 1) << bit;
-
+
if (!(f->file_map[idx] & mask))
break;
{
assert(ddir_rw(ddir));
- if (f->last_pos >= f->io_size && td->o.time_based)
+ if (f->last_pos >= f->io_size + get_start_offset(td) && td->o.time_based)
f->last_pos = f->last_pos - f->io_size;
if (f->last_pos < f->real_file_size) {
ret = 1;
}
}
-
+
if (!ret) {
if (offset != -1ULL)
io_u->offset = offset;
{
struct fio_file *f = io_u->file;
- return io_u->offset + buflen <= f->io_size + td->o.start_offset;
+ return io_u->offset + buflen <= f->io_size + get_start_offset(td);
}
static unsigned int __get_next_buflen(struct thread_data *td, struct io_u *io_u)
td->io_blocks[idx]++;
td->this_io_blocks[idx]++;
td->io_bytes[idx] += bytes;
- td->this_io_bytes[idx] += bytes;
+
+ if (!(io_u->flags & IO_U_F_VER_LIST))
+ td->this_io_bytes[idx] += bytes;
if (idx == DDIR_WRITE) {
f = io_u->file;
io_u_log_error(td, io_u);
}
if (icd->error && td_non_fatal_error(icd->error) &&
- (td->o.continue_on_error & td_error_type(io_u->ddir, icd->error))) {
+ (td->o.continue_on_error & td_error_type(io_u->ddir, icd->error))) {
/*
* If there is a non_fatal error, then add to the error count
* and clear all the errors.