Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[PATCH] Remove queue merging hooks

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>

+12 -17
+6 -9
block/ll_rw_blk.c
··· 1405 1405 return 1; 1406 1406 } 1407 1407 1408 - static int ll_back_merge_fn(request_queue_t *q, struct request *req, 1409 - struct bio *bio) 1408 + int ll_back_merge_fn(request_queue_t *q, struct request *req, struct bio *bio) 1410 1409 { 1411 1410 unsigned short max_sectors; 1412 1411 int len; ··· 1441 1442 1442 1443 return ll_new_hw_segment(q, req, bio); 1443 1444 } 1445 + EXPORT_SYMBOL(ll_back_merge_fn); 1444 1446 1445 1447 static int ll_front_merge_fn(request_queue_t *q, struct request *req, 1446 1448 struct bio *bio) ··· 1912 1912 } 1913 1913 1914 1914 q->request_fn = rfn; 1915 - q->back_merge_fn = ll_back_merge_fn; 1916 - q->front_merge_fn = ll_front_merge_fn; 1917 - q->merge_requests_fn = ll_merge_requests_fn; 1918 1915 q->prep_rq_fn = NULL; 1919 1916 q->unplug_fn = generic_unplug_device; 1920 1917 q->queue_flags = (1 << QUEUE_FLAG_CLUSTER); ··· 2368 2371 spin_lock_irq(q->queue_lock); 2369 2372 if (!rq->bio) 2370 2373 blk_rq_bio_prep(q, rq, bio); 2371 - else if (!q->back_merge_fn(q, rq, bio)) { 2374 + else if (!ll_back_merge_fn(q, rq, bio)) { 2372 2375 ret = -EINVAL; 2373 2376 spin_unlock_irq(q->queue_lock); 2374 2377 goto unmap_bio; ··· 2817 2820 * will have updated segment counts, update sector 2818 2821 * counts here. 2819 2822 */ 2820 - if (!q->merge_requests_fn(q, req, next)) 2823 + if (!ll_merge_requests_fn(q, req, next)) 2821 2824 return 0; 2822 2825 2823 2826 /* ··· 2934 2937 case ELEVATOR_BACK_MERGE: 2935 2938 BUG_ON(!rq_mergeable(req)); 2936 2939 2937 - if (!q->back_merge_fn(q, req, bio)) 2940 + if (!ll_back_merge_fn(q, req, bio)) 2938 2941 break; 2939 2942 2940 2943 blk_add_trace_bio(q, bio, BLK_TA_BACKMERGE); ··· 2951 2954 case ELEVATOR_FRONT_MERGE: 2952 2955 BUG_ON(!rq_mergeable(req)); 2953 2956 2954 - if (!q->front_merge_fn(q, req, bio)) 2957 + if (!ll_front_merge_fn(q, req, bio)) 2955 2958 break; 2956 2959 2957 2960 blk_add_trace_bio(q, bio, BLK_TA_FRONTMERGE);
+1 -1
drivers/scsi/scsi_lib.c
··· 265 265 266 266 if (!rq->bio) 267 267 blk_rq_bio_prep(q, rq, bio); 268 - else if (!q->back_merge_fn(q, rq, bio)) 268 + else if (!ll_back_merge_fn(q, rq, bio)) 269 269 return -EINVAL; 270 270 else { 271 271 rq->biotail->bi_next = bio;
+5 -7
include/linux/blkdev.h
··· 331 331 332 332 #include <linux/elevator.h> 333 333 334 - typedef int (merge_request_fn) (request_queue_t *, struct request *, 335 - struct bio *); 336 - typedef int (merge_requests_fn) (request_queue_t *, struct request *, 337 - struct request *); 338 334 typedef void (request_fn_proc) (request_queue_t *q); 339 335 typedef int (make_request_fn) (request_queue_t *q, struct bio *bio); 340 336 typedef int (prep_rq_fn) (request_queue_t *, struct request *); ··· 372 376 struct request_list rq; 373 377 374 378 request_fn_proc *request_fn; 375 - merge_request_fn *back_merge_fn; 376 - merge_request_fn *front_merge_fn; 377 - merge_requests_fn *merge_requests_fn; 378 379 make_request_fn *make_request_fn; 379 380 prep_rq_fn *prep_rq_fn; 380 381 unplug_fn *unplug_fn; ··· 640 647 extern int scsi_cmd_ioctl(struct file *, struct gendisk *, unsigned int, void __user *); 641 648 extern int sg_scsi_ioctl(struct file *, struct request_queue *, 642 649 struct gendisk *, struct scsi_ioctl_command __user *); 650 + 651 + /* 652 + * Temporary export, until SCSI gets fixed up. 653 + */ 654 + extern int ll_back_merge_fn(request_queue_t *, struct request *, struct bio *); 643 655 644 656 /* 645 657 * A queue has just exitted congestion. Note this in the global counter of