io_u->buflen = ipo->len;
io_u->file = td->files[ipo->fileno];
get_file(io_u->file);
-
dprint(FD_IO, "iolog: get %llu/%lu/%s\n", io_u->offset,
io_u->buflen, io_u->file->file_name);
- if (ipo->delay) iolog_delay(td, ipo->delay);
+ if (ipo->delay)
+ iolog_delay(td, ipo->delay);
} else {
elapsed = mtime_since_genesis();
if (ipo->delay > elapsed)
free(ipo);
- if (ipo->ddir != DDIR_WAIT)
+ if (io_u->ddir != DDIR_WAIT)
return 0;
}
parent = *p;
__ipo = rb_entry(parent, struct io_piece, rb_node);
- if (ipo->offset < __ipo->offset)
+ if (ipo->file < __ipo->file)
+ p = &(*p)->rb_left;
+ else if (ipo->file > __ipo->file)
+ p = &(*p)->rb_right;
+ else if (ipo->offset < __ipo->offset)
p = &(*p)->rb_left;
else if (ipo->offset > __ipo->offset)
p = &(*p)->rb_right;
assert(ipo->len == __ipo->len);
td->io_hist_len--;
rb_erase(parent, &td->io_hist_tree);
+ free(__ipo);
goto restart;
}
}