assert((io_u->flags & IO_U_F_FREE) == 0);
io_u->flags |= IO_U_F_FREE;
- if (io_u->file)
- put_file(td, io_u->file);
+ if (io_u->file) {
+ int ret = put_file(td, io_u->file);
+
+ if (ret)
+ td_verror(td, ret, "file close");
+ }
io_u->file = NULL;
list_del(&io_u->list);
long r = os_random_long(&td->next_file_state);
fno = (unsigned int) ((double) td->o.nr_files * (r / (RAND_MAX + 1.0)));
- f = &td->files[fno];
+ f = td->files[fno];
if (f->flags & FIO_FILE_DONE)
continue;
struct fio_file *f;
do {
- f = &td->files[td->next_file];
+ f = td->files[td->next_file];
td->next_file++;
if (td->next_file >= td->o.nr_files)
* Set io data pointers.
*/
io_u->endpos = io_u->offset + io_u->buflen;
-out:
io_u->xfer_buf = io_u->buf;
io_u->xfer_buflen = io_u->buflen;
-
+out:
if (!td_io_prep(td, io_u)) {
fio_gettime(&io_u->start_time, NULL);
return io_u;
td->io_bytes[idx] += bytes;
td->this_io_bytes[idx] += bytes;
- io_u->file->last_completed_pos = io_u->endpos;
-
usec = utime_since(&io_u->issue_time, &icd->time);
add_clat_sample(td, idx, usec);