Exemple #1
0
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;
}
Exemple #3
0
void tato_tree_int_clear(TatoTreeInt *thiss) {
	RB_CLEAR(TatoTreeInt_, thiss);
}