virtio_blk: don't bounce highmem requests
authorChristoph Hellwig <hch@lst.de>
Sat, 18 Jul 2009 03:47:45 +0000 (21:47 -0600)
committerRusty Russell <rusty@rustcorp.com.au>
Fri, 17 Jul 2009 12:17:46 +0000 (21:47 +0930)
By default a block driver bounces highmem requests, but virtio-blk is
perfectly fine with any request that fit into it's 64 bit addressing scheme,
mapped in the kernel virtual space or not.

Besides improving performance on highmem systems this also makes the
reproducible oops in __bounce_end_io go away (but hiding the real cause).

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
drivers/block/virtio_blk.c

index 43db3ea15b54936da4502526602c117876bd67fc..4c47859ad8b11955cbfd35013d6fddf503046e37 100644 (file)
@@ -360,6 +360,9 @@ static int __devinit virtblk_probe(struct virtio_device *vdev)
        blk_queue_max_phys_segments(vblk->disk->queue, vblk->sg_elems-2);
        blk_queue_max_hw_segments(vblk->disk->queue, vblk->sg_elems-2);
 
+       /* No need to bounce any requests */
+       blk_queue_bounce_limit(vblk->disk->queue, BLK_BOUNCE_ANY);
+
        /* No real sector limit. */
        blk_queue_max_sectors(vblk->disk->queue, -1U);