Lines Matching defs:ipo
25 void queue_io_piece(struct thread_data *td, struct io_piece *ipo)
27 flist_add_tail(&ipo->list, &td->io_log_list);
28 td->total_io_size += ipo->len;
95 static int ipo_special(struct thread_data *td, struct io_piece *ipo)
101 * Not a special ipo
103 if (ipo->ddir != DDIR_INVAL)
106 f = td->files[ipo->fileno];
108 switch (ipo->file_action) {
122 log_err("fio: bad file action %d\n", ipo->file_action);
131 struct io_piece *ipo;
137 ipo = flist_first_entry(&td->io_log_list, struct io_piece, list);
138 flist_del(&ipo->list);
139 remove_trim_entry(td, ipo);
141 ret = ipo_special(td, ipo);
143 free(ipo);
146 free(ipo);
150 io_u->ddir = ipo->ddir;
151 if (ipo->ddir != DDIR_WAIT) {
152 io_u->offset = ipo->offset;
153 io_u->buflen = ipo->len;
154 io_u->file = td->files[ipo->fileno];
158 if (ipo->delay)
159 iolog_delay(td, ipo->delay);
162 if (ipo->delay > elapsed)
163 usec_sleep(td, (ipo->delay - elapsed) * 1000);
166 free(ipo);
178 struct io_piece *ipo;
182 ipo = rb_entry(n, struct io_piece, rb_node);
184 remove_trim_entry(td, ipo);
186 free(ipo);
190 ipo = flist_first_entry(&td->io_hist_list, struct io_piece, list);
191 flist_del(&ipo->list);
192 remove_trim_entry(td, ipo);
194 free(ipo);
204 struct io_piece *ipo, *__ipo;
206 ipo = malloc(sizeof(struct io_piece));
207 init_ipo(ipo);
208 ipo->file = io_u->file;
209 ipo->offset = io_u->offset;
210 ipo->len = io_u->buflen;
211 ipo->numberio = io_u->numberio;
212 ipo->flags = IP_F_IN_FLIGHT;
214 io_u->ipo = ipo;
217 flist_add_tail(&ipo->trim_list, &td->trim_list);
236 (file_randommap(td, ipo->file) || td->o.verify == VERIFY_NONE)) {
237 INIT_FLIST_HEAD(&ipo->list);
238 flist_add_tail(&ipo->list, &td->io_hist_list);
239 ipo->flags |= IP_F_ONLIST;
244 RB_CLEAR_NODE(&ipo->rb_node);
257 if (ipo->file < __ipo->file)
259 else if (ipo->file > __ipo->file)
261 else if (ipo->offset < __ipo->offset) {
263 overlap = ipo->offset + ipo->len > __ipo->offset;
265 else if (ipo->offset > __ipo->offset) {
267 overlap = __ipo->offset + __ipo->len > ipo->offset;
275 ipo->offset, ipo->len);
284 rb_link_node(&ipo->rb_node, parent, p);
285 rb_insert_color(&ipo->rb_node, &td->io_hist_tree);
286 ipo->flags |= IP_F_ONRB;
292 struct io_piece *ipo = io_u->ipo;
294 if (!ipo)
297 if (ipo->flags & IP_F_ONRB)
298 rb_erase(&ipo->rb_node, &td->io_hist_tree);
299 else if (ipo->flags & IP_F_ONLIST)
300 flist_del(&ipo->list);
302 free(ipo);
303 io_u->ipo = NULL;
309 struct io_piece *ipo = io_u->ipo;
311 if (!ipo)
314 ipo->len = io_u->xfer_buflen - io_u->resid;
351 struct io_piece *ipo;
420 ipo = malloc(sizeof(*ipo));
421 init_ipo(ipo);
422 ipo->ddir = rw;
424 ipo->delay = offset;
426 ipo->offset = offset;
427 ipo->len = bytes;
430 ipo->fileno = fileno;
431 ipo->file_action = file_action;
435 queue_io_piece(td, ipo);