/*
  * rb tree support functions
  */
-#define RB_EMPTY(root) ((root)->rb_node == NULL)
-#define ON_RB(node)    (rb_parent(node) != node)
-#define RB_CLEAR(node) (rb_set_parent(node, node))
 #define rb_entry_arq(node)     rb_entry((node), struct as_rq, rb_node)
 #define ARQ_RB_ROOT(ad, arq)   (&(ad)->sort_list[(arq)->is_sync])
 #define rq_rb_key(rq)          (rq)->sector
 
 static inline void as_del_arq_rb(struct as_data *ad, struct as_rq *arq)
 {
-       if (!ON_RB(&arq->rb_node)) {
+       if (!RB_EMPTY_NODE(&arq->rb_node)) {
                WARN_ON(1);
                return;
        }
 
        rb_erase(&arq->rb_node, ARQ_RB_ROOT(ad, arq));
-       RB_CLEAR(&arq->rb_node);
+       RB_CLEAR_NODE(&arq->rb_node);
 }
 
 static struct request *
        struct rb_node *rbprev = rb_prev(&last->rb_node);
        struct as_rq *arq_next, *arq_prev;
 
-       BUG_ON(!ON_RB(&last->rb_node));
+       BUG_ON(!RB_EMPTY_NODE(&last->rb_node));
 
        if (rbprev)
                arq_prev = rb_entry_arq(rbprev);
        struct request *rq = arq->request;
        const int data_dir = arq->is_sync;
 
-       BUG_ON(!ON_RB(&arq->rb_node));
+       BUG_ON(!RB_EMPTY_NODE(&arq->rb_node));
 
        as_antic_stop(ad);
        ad->antic_status = ANTIC_OFF;
         */
 
        if (reads) {
-               BUG_ON(RB_EMPTY(&ad->sort_list[REQ_SYNC]));
+               BUG_ON(RB_EMPTY_ROOT(&ad->sort_list[REQ_SYNC]));
 
                if (writes && ad->batch_data_dir == REQ_SYNC)
                        /*
 
        if (writes) {
 dispatch_writes:
-               BUG_ON(RB_EMPTY(&ad->sort_list[REQ_ASYNC]));
+               BUG_ON(RB_EMPTY_ROOT(&ad->sort_list[REQ_ASYNC]));
 
                if (ad->batch_data_dir == REQ_SYNC) {
                        ad->changed_batch = 1;
 
        if (arq) {
                memset(arq, 0, sizeof(*arq));
-               RB_CLEAR(&arq->rb_node);
+               RB_CLEAR_NODE(&arq->rb_node);
                arq->request = rq;
                arq->state = AS_RQ_PRESCHED;
                arq->io_context = NULL;
 
 /*
  * rb-tree defines
  */
-#define RB_EMPTY(node)         ((node)->rb_node == NULL)
-#define RB_CLEAR(node)         do {    \
-               memset(node, 0, sizeof(*node)); \
-} while (0)
-#define RB_CLEAR_ROOT(root)    ((root)->rb_node = NULL)
 #define rb_entry_crq(node)     rb_entry((node), struct cfq_rq, rb_node)
 #define rq_rb_key(rq)          (rq)->sector
 
 
        rb_erase(&crq->rb_node, &cfqq->sort_list);
 
-       if (cfq_cfqq_on_rr(cfqq) && RB_EMPTY(&cfqq->sort_list))
+       if (cfq_cfqq_on_rr(cfqq) && RB_EMPTY_ROOT(&cfqq->sort_list))
                cfq_del_cfqq_rr(cfqd, cfqq);
 }
 
        struct cfq_io_context *cic;
        unsigned long sl;
 
-       WARN_ON(!RB_EMPTY(&cfqq->sort_list));
+       WARN_ON(!RB_EMPTY_ROOT(&cfqq->sort_list));
        WARN_ON(cfqq != cfqd->active_queue);
 
        /*
         * if queue has requests, dispatch one. if not, check if
         * enough slice is left to wait for one
         */
-       if (!RB_EMPTY(&cfqq->sort_list))
+       if (!RB_EMPTY_ROOT(&cfqq->sort_list))
                goto keep_queue;
        else if (cfq_cfqq_dispatched(cfqq)) {
                cfqq = NULL;
 {
        int dispatched = 0;
 
-       BUG_ON(RB_EMPTY(&cfqq->sort_list));
+       BUG_ON(RB_EMPTY_ROOT(&cfqq->sort_list));
 
        do {
                struct cfq_rq *crq;
                        cfqd->active_cic = crq->io_context;
                }
 
-               if (RB_EMPTY(&cfqq->sort_list))
+               if (RB_EMPTY_ROOT(&cfqq->sort_list))
                        break;
 
        } while (dispatched < max_dispatch);
 
                INIT_HLIST_NODE(&cfqq->cfq_hash);
                INIT_LIST_HEAD(&cfqq->cfq_list);
-               RB_CLEAR_ROOT(&cfqq->sort_list);
                INIT_LIST_HEAD(&cfqq->fifo);
 
                cfqq->key = key;
        if (cfqd->active_queue == cfqq) {
                if (time_after(now, cfqq->slice_end))
                        cfq_slice_expired(cfqd, 0);
-               else if (sync && RB_EMPTY(&cfqq->sort_list)) {
+               else if (sync && RB_EMPTY_ROOT(&cfqq->sort_list)) {
                        if (!cfq_arm_slice_timer(cfqd, cfqq))
                                cfq_schedule_dispatch(cfqd);
                }
 
        crq = mempool_alloc(cfqd->crq_pool, gfp_mask);
        if (crq) {
-               RB_CLEAR(&crq->rb_node);
+               RB_CLEAR_NODE(&crq->rb_node);
                crq->rb_key = 0;
                crq->request = rq;
                INIT_HLIST_NODE(&crq->hash);
                /*
                 * not expired and it has a request pending, let it dispatch
                 */
-               if (!RB_EMPTY(&cfqq->sort_list)) {
+               if (!RB_EMPTY_ROOT(&cfqq->sort_list)) {
                        cfq_mark_cfqq_must_dispatch(cfqq);
                        goto out_kick;
                }
 
 /*
  * rb tree support functions
  */
-#define RB_EMPTY(root) ((root)->rb_node == NULL)
-#define ON_RB(node)    (rb_parent(node) != node)
-#define RB_CLEAR(node) (rb_set_parent(node, node))
 #define rb_entry_drq(node)     rb_entry((node), struct deadline_rq, rb_node)
 #define DRQ_RB_ROOT(dd, drq)   (&(dd)->sort_list[rq_data_dir((drq)->request)])
 #define rq_rb_key(rq)          (rq)->sector
                        dd->next_drq[data_dir] = rb_entry_drq(rbnext);
        }
 
-       BUG_ON(!ON_RB(&drq->rb_node));
+       BUG_ON(!RB_EMPTY_NODE(&drq->rb_node));
        rb_erase(&drq->rb_node, DRQ_RB_ROOT(dd, drq));
-       RB_CLEAR(&drq->rb_node);
+       RB_CLEAR_NODE(&drq->rb_node);
 }
 
 static struct request *
         */
 
        if (reads) {
-               BUG_ON(RB_EMPTY(&dd->sort_list[READ]));
+               BUG_ON(RB_EMPTY_ROOT(&dd->sort_list[READ]));
 
                if (writes && (dd->starved++ >= dd->writes_starved))
                        goto dispatch_writes;
 
        if (writes) {
 dispatch_writes:
-               BUG_ON(RB_EMPTY(&dd->sort_list[WRITE]));
+               BUG_ON(RB_EMPTY_ROOT(&dd->sort_list[WRITE]));
 
                dd->starved = 0;
 
        drq = mempool_alloc(dd->drq_pool, gfp_mask);
        if (drq) {
                memset(drq, 0, sizeof(*drq));
-               RB_CLEAR(&drq->rb_node);
+               RB_CLEAR_NODE(&drq->rb_node);
                drq->request = rq;
 
                INIT_HLIST_NODE(&drq->hash);
 
 #define RB_ROOT        (struct rb_root) { NULL, }
 #define        rb_entry(ptr, type, member) container_of(ptr, type, member)
 
+#define RB_EMPTY_ROOT(root)    ((root)->rb_node == NULL)
+#define RB_EMPTY_NODE(node)    (rb_parent(node) != node)
+#define RB_CLEAR_NODE(node)    (rb_set_parent(node, node))
+
 extern void rb_insert_color(struct rb_node *, struct rb_root *);
 extern void rb_erase(struct rb_node *, struct rb_root *);