diff -NurpP --minimal linux-2.6.38-vs2.3.0.37-rc7/drivers/block/vroot.c linux-2.6.38-vs2.3.0.37-rc8/drivers/block/vroot.c --- linux-2.6.38-vs2.3.0.37-rc7/drivers/block/vroot.c 2011-01-29 02:01:07.000000000 +0100 +++ linux-2.6.38-vs2.3.0.37-rc8/drivers/block/vroot.c 2011-03-17 18:14:05.000000000 +0100 @@ -145,6 +145,13 @@ static struct block_device_operations vr .ioctl = vr_ioctl, }; +static int vroot_make_request(struct request_queue *q, struct bio *bio) +{ + printk("vroot_make_request %p, %p\n", q, bio); + bio_io_error(bio); + return 0; +} + struct block_device *__vroot_get_real_bdev(struct block_device *bdev) { struct inode *inode = bdev->bd_inode; @@ -166,6 +173,8 @@ struct block_device *__vroot_get_real_bd return real_bdev; } + + /* * And now the modules code and kernel interface. */ @@ -211,6 +220,7 @@ int __init vroot_init(void) disks[i]->queue = blk_alloc_queue(GFP_KERNEL); if (!disks[i]->queue) goto out_mem3; + blk_queue_make_request(disks[i]->queue, vroot_make_request); } for (i = 0; i < max_vroot; i++) {