diff -urN 2.4.7/drivers/block/paride/pd.c paride/drivers/block/paride/pd.c --- 2.4.7/drivers/block/paride/pd.c Sat May 26 04:03:39 2001 +++ paride/drivers/block/paride/pd.c Mon Jul 23 03:27:20 2001 @@ -287,6 +287,7 @@ static struct hd_struct pd_hd[PD_DEVS]; static int pd_sizes[PD_DEVS]; static int pd_blocksizes[PD_DEVS]; +static int pd_maxsectors[PD_DEVS]; #define PD_NAMELEN 8 @@ -385,56 +386,6 @@ } } -static inline int pd_new_segment(request_queue_t *q, struct request *req, int max_segments) -{ - if (max_segments > cluster) - max_segments = cluster; - - if (req->nr_segments < max_segments) { - req->nr_segments++; - return 1; - } - return 0; -} - -static int pd_back_merge_fn(request_queue_t *q, struct request *req, - struct buffer_head *bh, int max_segments) -{ - if (req->bhtail->b_data + req->bhtail->b_size == bh->b_data) - return 1; - return pd_new_segment(q, req, max_segments); -} - -static int pd_front_merge_fn(request_queue_t *q, struct request *req, - struct buffer_head *bh, int max_segments) -{ - if (bh->b_data + bh->b_size == req->bh->b_data) - return 1; - return pd_new_segment(q, req, max_segments); -} - -static int pd_merge_requests_fn(request_queue_t *q, struct request *req, - struct request *next, int max_segments) -{ - int total_segments = req->nr_segments + next->nr_segments; - int same_segment; - - if (max_segments > cluster) - max_segments = cluster; - - same_segment = 0; - if (req->bhtail->b_data + req->bhtail->b_size == next->bh->b_data) { - total_segments--; - same_segment = 1; - } - - if (total_segments > max_segments) - return 0; - - req->nr_segments = total_segments; - return 1; -} - int pd_init (void) { int i; @@ -448,9 +399,6 @@ } q = BLK_DEFAULT_QUEUE(MAJOR_NR); blk_init_queue(q, DEVICE_REQUEST); - q->back_merge_fn = pd_back_merge_fn; - q->front_merge_fn = pd_front_merge_fn; - q->merge_requests_fn = pd_merge_requests_fn; read_ahead[MAJOR_NR] = 8; /* 8 sector (4kB) read ahead */ pd_gendisk.major = major; @@ -461,6 +409,9 @@ for(i=0;i