From: Jens Axboe Date: Tue, 11 Jul 2006 19:49:15 +0000 (+0200) Subject: [PATCH] elevator: introduce a way to reuse rq for internal FIFO handling X-Git-Tag: v2.6.19-rc1~640^2~59 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=1fbfdfcddff4df188b24d9d05271a76a85064583;p=linux-2.6-omap-h63xx.git [PATCH] elevator: introduce a way to reuse rq for internal FIFO handling The io schedulers can use this instead of having to allocate space for it themselves. Signed-off-by: Jens Axboe --- diff --git a/include/linux/elevator.h b/include/linux/elevator.h index 95b2a04b969..0e7b1a73391 100644 --- a/include/linux/elevator.h +++ b/include/linux/elevator.h @@ -166,4 +166,16 @@ enum { #define rq_end_sector(rq) ((rq)->sector + (rq)->nr_sectors) #define rb_entry_rq(node) rb_entry((node), struct request, rb_node) +/* + * Hack to reuse the donelist list_head as the fifo time holder while + * the request is in the io scheduler. Saves an unsigned long in rq. + */ +#define rq_fifo_time(rq) ((unsigned long) (rq)->donelist.next) +#define rq_set_fifo_time(rq,exp) ((rq)->donelist.next = (void *) (exp)) +#define rq_entry_fifo(ptr) list_entry((ptr), struct request, queuelist) +#define rq_fifo_clear(rq) do { \ + list_del_init(&(rq)->queuelist); \ + INIT_LIST_HEAD(&(rq)->donelist); \ + } while (0) + #endif