Skip to content

Commit

Permalink
[PATCH] Remove queue merging hooks
Browse files Browse the repository at this point in the history
We have full flexibility of merging parameters now, so we can remove the
hooks that define back/front/request merge strategies. Nobody is using
them anymore.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
  • Loading branch information
Jens Axboe committed Dec 19, 2006
1 parent 2985259 commit 1aa4f24
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 17 deletions.
15 changes: 6 additions & 9 deletions block/ll_rw_blk.c
Original file line number Diff line number Diff line change
Expand Up @@ -1405,8 +1405,7 @@ static inline int ll_new_hw_segment(request_queue_t *q,
return 1;
}

static int ll_back_merge_fn(request_queue_t *q, struct request *req,
struct bio *bio)
int ll_back_merge_fn(request_queue_t *q, struct request *req, struct bio *bio)
{
unsigned short max_sectors;
int len;
Expand Down Expand Up @@ -1442,6 +1441,7 @@ static int ll_back_merge_fn(request_queue_t *q, struct request *req,

return ll_new_hw_segment(q, req, bio);
}
EXPORT_SYMBOL(ll_back_merge_fn);

static int ll_front_merge_fn(request_queue_t *q, struct request *req,
struct bio *bio)
Expand Down Expand Up @@ -1912,9 +1912,6 @@ blk_init_queue_node(request_fn_proc *rfn, spinlock_t *lock, int node_id)
}

q->request_fn = rfn;
q->back_merge_fn = ll_back_merge_fn;
q->front_merge_fn = ll_front_merge_fn;
q->merge_requests_fn = ll_merge_requests_fn;
q->prep_rq_fn = NULL;
q->unplug_fn = generic_unplug_device;
q->queue_flags = (1 << QUEUE_FLAG_CLUSTER);
Expand Down Expand Up @@ -2371,7 +2368,7 @@ static int __blk_rq_map_user(request_queue_t *q, struct request *rq,
spin_lock_irq(q->queue_lock);
if (!rq->bio)
blk_rq_bio_prep(q, rq, bio);
else if (!q->back_merge_fn(q, rq, bio)) {
else if (!ll_back_merge_fn(q, rq, bio)) {
ret = -EINVAL;
spin_unlock_irq(q->queue_lock);
goto unmap_bio;
Expand Down Expand Up @@ -2820,7 +2817,7 @@ static int attempt_merge(request_queue_t *q, struct request *req,
* will have updated segment counts, update sector
* counts here.
*/
if (!q->merge_requests_fn(q, req, next))
if (!ll_merge_requests_fn(q, req, next))
return 0;

/*
Expand Down Expand Up @@ -2937,7 +2934,7 @@ static int __make_request(request_queue_t *q, struct bio *bio)
case ELEVATOR_BACK_MERGE:
BUG_ON(!rq_mergeable(req));

if (!q->back_merge_fn(q, req, bio))
if (!ll_back_merge_fn(q, req, bio))
break;

blk_add_trace_bio(q, bio, BLK_TA_BACKMERGE);
Expand All @@ -2954,7 +2951,7 @@ static int __make_request(request_queue_t *q, struct bio *bio)
case ELEVATOR_FRONT_MERGE:
BUG_ON(!rq_mergeable(req));

if (!q->front_merge_fn(q, req, bio))
if (!ll_front_merge_fn(q, req, bio))
break;

blk_add_trace_bio(q, bio, BLK_TA_FRONTMERGE);
Expand Down
2 changes: 1 addition & 1 deletion drivers/scsi/scsi_lib.c
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ static int scsi_merge_bio(struct request *rq, struct bio *bio)

if (!rq->bio)
blk_rq_bio_prep(q, rq, bio);
else if (!q->back_merge_fn(q, rq, bio))
else if (!ll_back_merge_fn(q, rq, bio))
return -EINVAL;
else {
rq->biotail->bi_next = bio;
Expand Down
12 changes: 5 additions & 7 deletions include/linux/blkdev.h
Original file line number Diff line number Diff line change
Expand Up @@ -331,10 +331,6 @@ struct request_pm_state

#include <linux/elevator.h>

typedef int (merge_request_fn) (request_queue_t *, struct request *,
struct bio *);
typedef int (merge_requests_fn) (request_queue_t *, struct request *,
struct request *);
typedef void (request_fn_proc) (request_queue_t *q);
typedef int (make_request_fn) (request_queue_t *q, struct bio *bio);
typedef int (prep_rq_fn) (request_queue_t *, struct request *);
Expand Down Expand Up @@ -376,9 +372,6 @@ struct request_queue
struct request_list rq;

request_fn_proc *request_fn;
merge_request_fn *back_merge_fn;
merge_request_fn *front_merge_fn;
merge_requests_fn *merge_requests_fn;
make_request_fn *make_request_fn;
prep_rq_fn *prep_rq_fn;
unplug_fn *unplug_fn;
Expand Down Expand Up @@ -648,6 +641,11 @@ extern int scsi_cmd_ioctl(struct file *, struct gendisk *, unsigned int, void __
extern int sg_scsi_ioctl(struct file *, struct request_queue *,
struct gendisk *, struct scsi_ioctl_command __user *);

/*
* Temporary export, until SCSI gets fixed up.
*/
extern int ll_back_merge_fn(request_queue_t *, struct request *, struct bio *);

/*
* A queue has just exitted congestion. Note this in the global counter of
* congested queues, and wake up anyone who was waiting for requests to be
Expand Down

0 comments on commit 1aa4f24

Please sign in to comment.