Home | History | Annotate | Download | only in fio

Lines Matching defs:ipo

17 void queue_io_piece(struct thread_data *td, struct io_piece *ipo)
19 flist_add_tail(&ipo->list, &td->io_log_list);
20 td->total_io_size += ipo->len;
84 static int ipo_special(struct thread_data *td, struct io_piece *ipo)
90 * Not a special ipo
92 if (ipo->ddir != DDIR_INVAL)
95 f = td->files[ipo->fileno];
97 switch (ipo->file_action) {
111 log_err("fio: bad file action %d\n", ipo->file_action);
120 struct io_piece *ipo;
126 ipo = flist_entry(td->io_log_list.next, struct io_piece, list);
127 flist_del(&ipo->list);
128 remove_trim_entry(td, ipo);
130 ret = ipo_special(td, ipo);
132 free(ipo);
135 free(ipo);
139 io_u->ddir = ipo->ddir;
140 if (ipo->ddir != DDIR_WAIT) {
141 io_u->offset = ipo->offset;
142 io_u->buflen = ipo->len;
143 io_u->file = td->files[ipo->fileno];
147 if (ipo->delay)
148 iolog_delay(td, ipo->delay);
151 if (ipo->delay > elapsed)
152 usec_sleep(td, (ipo->delay - elapsed) * 1000);
155 free(ipo);
167 struct io_piece *ipo;
171 ipo = rb_entry(n, struct io_piece, rb_node);
173 remove_trim_entry(td, ipo);
175 free(ipo);
179 ipo = flist_entry(td->io_hist_list.next, struct io_piece, list);
180 flist_del(&ipo->list);
181 remove_trim_entry(td, ipo);
183 free(ipo);
193 struct io_piece *ipo, *__ipo;
195 ipo = malloc(sizeof(struct io_piece));
196 init_ipo(ipo);
197 ipo->file = io_u->file;
198 ipo->offset = io_u->offset;
199 ipo->len = io_u->buflen;
200 ipo->numberio = io_u->numberio;
201 ipo->flags = IP_F_IN_FLIGHT;
203 io_u->ipo = ipo;
206 flist_add_tail(&ipo->trim_list, &td->trim_list);
225 (file_randommap(td, ipo->file) || td->o.verify == VERIFY_NONE)) {
226 INIT_FLIST_HEAD(&ipo->list);
227 flist_add_tail(&ipo->list, &td->io_hist_list);
228 ipo->flags |= IP_F_ONLIST;
233 RB_CLEAR_NODE(&ipo->rb_node);
245 if (ipo->file < __ipo->file)
247 else if (ipo->file > __ipo->file)
249 else if (ipo->offset < __ipo->offset)
251 else if (ipo->offset > __ipo->offset)
256 ipo->offset, ipo->len);
265 rb_link_node(&ipo->rb_node, parent, p);
266 rb_insert_color(&ipo->rb_node, &td->io_hist_tree);
267 ipo->flags |= IP_F_ONRB;
273 struct io_piece *ipo = io_u->ipo;
275 if (!ipo)
278 if (ipo->flags & IP_F_ONRB)
279 rb_erase(&ipo->rb_node, &td->io_hist_tree);
280 else if (ipo->flags & IP_F_ONLIST)
281 flist_del(&ipo->list);
283 free(ipo);
284 io_u->ipo = NULL;
290 struct io_piece *ipo = io_u->ipo;
292 if (!ipo)
295 ipo->len = io_u->xfer_buflen - io_u->resid;
332 struct io_piece *ipo;
401 ipo = malloc(sizeof(*ipo));
402 init_ipo(ipo);
403 ipo->ddir = rw;
405 ipo->delay = offset;
407 ipo->offset = offset;
408 ipo->len = bytes;
411 ipo->fileno = fileno;
412 ipo->file_action = file_action;
415 queue_io_piece(td, ipo);