diff -urN ref/drivers/block/linear.c lvm/drivers/block/linear.c --- ref/drivers/block/linear.c Fri Feb 11 00:05:33 2000 +++ lvm/drivers/block/linear.c Wed Feb 23 01:27:15 2000 @@ -149,7 +149,6 @@ bh->b_rdev = tmp_dev->dev; bh->b_rsector = (block - tmp_dev->offset) << 1; - generic_make_request(rw, bh); return 0; } diff -urN ref/drivers/block/md.c lvm/drivers/block/md.c --- ref/drivers/block/md.c Mon Feb 21 15:17:31 2000 +++ lvm/drivers/block/md.c Wed Feb 23 01:27:15 2000 @@ -178,18 +178,14 @@ return; } -void md_make_request (int rw, struct buffer_head * bh) +int md_logical_volume (int rw, struct buffer_head * bh) { mddev_t *mddev = kdev_to_mddev(bh->b_dev); - if (!mddev || !mddev->pers) - bh->b_end_io(bh, 0); - else { - if ((rw == READ || rw == READA) && buffer_uptodate(bh)) - bh->b_end_io(bh, 1); - else - mddev->pers->make_request(mddev, rw, bh); - } + if (mddev && mddev->pers) + return mddev->pers->make_request(mddev, rw, bh); + else + return 1; } static mddev_t * alloc_mddev (kdev_t dev) @@ -215,9 +211,9 @@ MD_INIT_LIST_HEAD(&mddev->all_mddevs); q = &mddev->queue; + blk_logical_volume(&blk_dev[MAJOR_NR], md_logical_volume); blk_init_queue(q, DEVICE_REQUEST); blk_queue_pluggable(q, md_plug_device); - blk_queue_make_request(q, md_make_request); q->plug_tq.sync = 0; q->plug_tq.routine = &md_unplug_device; diff -urN ref/drivers/block/raid0.c lvm/drivers/block/raid0.c --- ref/drivers/block/raid0.c Fri Feb 11 00:05:33 2000 +++ lvm/drivers/block/raid0.c Wed Feb 23 01:27:15 2000 @@ -269,8 +269,6 @@ bh->b_rdev = tmp_dev->dev; bh->b_rsector = rblock << 1; - generic_make_request(rw, bh); - return 0; bad_map: