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;
*/
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;
}
icd->error = io_u->error;
io_u_log_error(td, io_u);
}
- if (td->o.continue_on_error && icd->error &&
- td_non_fatal_error(icd->error)) {
+ if (icd->error && td_non_fatal_error(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.