]> git.neil.brown.name Git - history.git/commit
[PATCH] misc elevator/block updates
authorJens Axboe <axboe@suse.de>
Thu, 1 Aug 2002 04:46:36 +0000 (21:46 -0700)
committerJens Axboe <axboe@burns.home.kernel.dk>
Thu, 1 Aug 2002 04:46:36 +0000 (21:46 -0700)
commitbba7c6459282514a328c42b35e508f1c57a96655
treeea6b75faa8cf75469e8fcba6517f7b26acc06340
parentf04d3972a1730cbe872ea99a9861667897cca940
[PATCH] misc elevator/block updates

I've got a new i/o scheduler in testing, some changes where needed in
the block layer to accomodate it. Basically because right now
assumptions are made about q->queue_head being the sort list. The
changes in detail:

o elevator_merge_requests_fn takes queue argument as well

o __make_request() inits insert_here to NULL instead of
  q->queue_head.prev, which means that the i/o schedulers must
  explicitly check for this condition now.

o incorporate elv_queue_empty(), it was just a place holder before

o add elv_get_sort_head(). it returns the sort head of the elevator for
  a given request. attempt_{back,front}_merge uses it to determine
  whether a request is valid or not. Maybe attempt_{back,front}_merge
  should just be killed, I doubt they have much relevance with the wake
  up batching.

o call the merge_cleanup functions of the elevator _after_ the merge has
  been done, not before. This way the elevator functions get the new
  state of the request, which is the most interesting.

o Kill extra nr_sectors check in ll_merge_requests_fn()

o bi->bi_bdev is always set in __make_request(), so kill check.
drivers/block/elevator.c
drivers/block/ll_rw_blk.c
include/linux/elevator.h