Home | History | Annotate | Download | only in fio

Lines Matching defs:ipo

27 void queue_io_piece(struct thread_data *td, struct io_piece *ipo)
29 flist_add_tail(&ipo->list, &td->io_log_list);
30 td->total_io_size += ipo->len;
97 static int ipo_special(struct thread_data *td, struct io_piece *ipo)
103 * Not a special ipo
105 if (ipo->ddir != DDIR_INVAL)
108 f = td->files[ipo->fileno];
110 switch (ipo->file_action) {
129 log_err("fio: bad file action %d\n", ipo->file_action);
138 struct io_piece *ipo;
144 ipo = flist_first_entry(&td->io_log_list, struct io_piece, list);
145 flist_del(&ipo->list);
146 remove_trim_entry(td, ipo);
148 ret = ipo_special(td, ipo);
150 free(ipo);
153 free(ipo);
157 io_u->ddir = ipo->ddir;
158 if (ipo->ddir != DDIR_WAIT) {
159 io_u->offset = ipo->offset;
160 io_u->buflen = ipo->len;
161 io_u->file = td->files[ipo->fileno];
165 if (ipo->delay)
166 iolog_delay(td, ipo->delay);
169 if (ipo->delay > elapsed)
170 usec_sleep(td, (ipo->delay - elapsed) * 1000);
173 free(ipo);
185 struct io_piece *ipo;
189 ipo = rb_entry(n, struct io_piece, rb_node);
191 remove_trim_entry(td, ipo);
193 free(ipo);
197 ipo = flist_first_entry(&td->io_hist_list, struct io_piece, list);
198 flist_del(&ipo->list);
199 remove_trim_entry(td, ipo);
201 free(ipo);
211 struct io_piece *ipo, *__ipo;
213 ipo = malloc(sizeof(struct io_piece));
214 init_ipo(ipo);
215 ipo->file = io_u->file;
216 ipo->offset = io_u->offset;
217 ipo->len = io_u->buflen;
218 ipo->numberio = io_u->numberio;
219 ipo->flags = IP_F_IN_FLIGHT;
221 io_u->ipo = ipo;
224 flist_add_tail(&ipo->trim_list, &td->trim_list);
243 (file_randommap(td, ipo->file) || td->o.verify == VERIFY_NONE)) {
244 INIT_FLIST_HEAD(&ipo->list);
245 flist_add_tail(&ipo->list, &td->io_hist_list);
246 ipo->flags |= IP_F_ONLIST;
251 RB_CLEAR_NODE(&ipo->rb_node);
264 if (ipo->file < __ipo->file)
266 else if (ipo->file > __ipo->file)
268 else if (ipo->offset < __ipo->offset) {
270 overlap = ipo->offset + ipo->len > __ipo->offset;
272 else if (ipo->offset > __ipo->offset) {
274 overlap = __ipo->offset + __ipo->len > ipo->offset;
282 ipo->offset, ipo->len);
291 rb_link_node(&ipo->rb_node, parent, p);
292 rb_insert_color(&ipo->rb_node, &td->io_hist_tree);
293 ipo->flags |= IP_F_ONRB;
299 struct io_piece *ipo = io_u->ipo;
313 if (!ipo)
316 if (ipo->flags & IP_F_ONRB)
317 rb_erase(&ipo->rb_node, &td->io_hist_tree);
318 else if (ipo->flags & IP_F_ONLIST)
319 flist_del(&ipo->list);
321 free(ipo);
322 io_u->ipo = NULL;
328 struct io_piece *ipo = io_u->ipo;
330 if (!ipo)
333 ipo->len = io_u->xfer_buflen - io_u->resid;
370 struct io_piece *ipo;
451 ipo = malloc(sizeof(*ipo));
452 init_ipo(ipo);
453 ipo->ddir = rw;
455 ipo->delay = offset;
458 ipo->offset = offset / td->o.replay_scale;
460 ipo->offset = offset;
461 ipo_bytes_align(td->o.replay_align, ipo);
463 ipo->len = bytes;
466 ipo->fileno = fileno;
467 ipo->file_action = file_action;
471 queue_io_piece(td, ipo);