static inline void deadline_del_drq_rb(struct deadline_data *dd, struct deadline_rq *drq) { const int data_dir = rq_data_dir(drq->request); if (dd->next_drq[data_dir] == drq) { struct rb_node *rbnext = rb_next(&drq->rb_node); dd->next_drq[data_dir] = NULL; if (rbnext) dd->next_drq[data_dir] = rb_entry_drq(rbnext); } if (ON_RB(&drq->rb_node)) { rb_erase(&drq->rb_node, DRQ_RB_ROOT(dd, drq)); RB_CLEAR(&drq->rb_node); } }
static int deadline_set_request(request_queue_t *q, struct request *rq, int gfp_mask) { struct deadline_data *dd = q->elevator->elevator_data; struct deadline_rq *drq; drq = mempool_alloc(dd->drq_pool, gfp_mask); if (drq) { memset(drq, 0, sizeof(*drq)); RB_CLEAR(&drq->rb_node); drq->request = rq; INIT_LIST_HEAD(&drq->hash); drq->on_hash = 0; INIT_LIST_HEAD(&drq->fifo); rq->elevator_private = drq; return 0; } return 1; }
void tato_tree_int_clear(TatoTreeInt *thiss) { RB_CLEAR(TatoTreeInt_, thiss); }