From: NIIBE Y. <gn...@m1...> - 2001-08-03 12:01:42
|
GD-ROM driver is ready for new block device interface, but too many request can be merged by default. As it's very slow, it's better not merge the requests. * drivers/cdrom/gdrom.c (gdrom_init): Let block device layer not merge the requests. Index: drivers/cdrom/gdrom.c =================================================================== RCS file: /cvsroot/linuxsh/kernel/drivers/cdrom/gdrom.c,v retrieving revision 1.3 diff -u -r1.3 gdrom.c --- drivers/cdrom/gdrom.c 2001/08/03 11:22:06 1.3 +++ drivers/cdrom/gdrom.c 2001/08/03 11:56:49 @@ -437,6 +437,22 @@ name: "gdrom", }; +/* + * This driver works with new merge interface, but if the merge occurs + * performance gets really worse. Hence, we disable the merge of requests. + */ +static int dont_merge_requests_fn(request_queue_t *q, struct request *req, + struct request *next, int max_segments) +{ + return 0; +} + +static int dont_bh_merge_fn(request_queue_t *q, struct request *req, + struct buffer_head *bh, int max_segments) +{ + return 0; +} + static int __init gdrom_init(void) { request_queue_t * q; @@ -455,6 +471,9 @@ q = BLK_DEFAULT_QUEUE(MAJOR_NR); blk_init_queue(q, DEVICE_REQUEST); + q->back_merge_fn = dont_bh_merge_fn; + q->front_merge_fn = dont_bh_merge_fn; + q->merge_requests_fn = dont_merge_requests_fn; blksize_size[MAJOR_NR] = &gdrom_blocksize; hardsect_size[MAJOR_NR] = &gdrom_hardsecsize; read_ahead[MAJOR_NR] = 4; -- |