virtio-blk: allow more than one in-flight request
Subsystems (4)
PATCH 1/1 virtio-blk: allow more than one in-flight request
Allow more than one in-flight request in the virtio ring. This allows the host driver to submit requests in parallel.
drivers/block/virtio_blk.c +4 -1
@@ -30,6 +30,8 @@ struct virtio_blkstruct scatterlist sg[VIRTIO_MAX_SG ]; }; +#define VIRTIO_BLK_POOL_SIZE 32 +struct virtblk_req {struct list_head list;
@@ -202,7 +204,8 @@ static int virtblk_probe(struct virtio_device *vdev) goto out_free_vblk; } - vblk->pool =mempool_create_kmalloc_pool (1 ,sizeof (struct virtblk_req )); + vblk->pool =mempool_create_kmalloc_pool (VIRTIO_BLK_POOL_SIZE , +sizeof (struct virtblk_req ));if (!vblk->pool) { err = -ENOMEM ; goto out_free_vq;
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
Am Donnerstag, 27. März 2008 schrieb Marcelo Tosatti:
Quoted 3 lines
Allow more than one in-flight request in the virtio ring. This allows the host driver to submit requests in parallel.
[...]
Quoted 4 lines
drivers/block/virtio_blk.c +0
-0
[...]
drivers/block/virtio_blk.c static int virtblk_probe(struct virtio_device *vdev) · line 211
Quoted 10 lines
drivers/block/virtio_blk.c +2
-1@@ -202,7 +204,8 @@ static int virtblk_probe(struct virtio_device *vdev) goto out_free_vblk; } - vblk->pool =mempool_create_kmalloc_pool (1 ,sizeof (struct virtblk_req )); + vblk->pool =mempool_create_kmalloc_pool (VIRTIO_BLK_POOL_SIZE , +sizeof (struct virtblk_req ));if (!vblk->pool) { err = -ENOMEM ; goto out_free_vq;
[...]
Huh? I dont understand. You only change the number of pre-allocated pool entries. mempool_alloc should allow several allocations, even with 1 as initialization value. The pre-initialized value is only for oom situations. No?
Christian
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
Quoted 22 lines · Christian Borntraeger
Am Donnerstag, 27. März 2008 schrieb Marcelo Tosatti:
Quoted 3 lines
Allow more than one in-flight request in the virtio ring. This allows the host driver to submit requests in parallel.
[...]
Quoted 4 lines
drivers/block/virtio_blk.c +0
-0[...]
Quoted 10 lines
drivers/block/virtio_blk.c +2
-1@@ -202,7 +204,8 @@ static int virtblk_probe(struct virtio_device *vdev) goto out_free_vblk; } - vblk->pool =mempool_create_kmalloc_pool (1 ,sizeof (struct virtblk_req )); + vblk->pool =mempool_create_kmalloc_pool (VIRTIO_BLK_POOL_SIZE , +sizeof (struct virtblk_req ));if (!vblk->pool) { err = -ENOMEM ; goto out_free_vq;[...]
Quoted 4 lines
Huh? I dont understand. You only change the number of pre-allocated pool entries.
mempool_allocshould allow several allocations, even with 1 as initialization value. The pre-initialized value is only for oom situations. No?
Thats right, the mempool allocation will fail under memory pressure (since __GFP_NOMEMALLOC is passed from mempool_allocate), but under normal circumstances it will allocate more than one entry.
So ignore the patch. Sorry for the noise.
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
Quoted 4 lines · On Friday 28 March 2008 03:29:48 Marcelo Tosatti wrote:
Allow more than one in-flight request in the virtio ring. This allows the host driver to submit requests in parallel.
Signed-off-by Marcelo Tosatti <[email protected]>
For a moment, I thought this was true and felt very stupid :)
For the record, the mempool_alloc becomes kmalloc with fallback to the pool. We only need one because we can make progress with one request at a time if we have to.
Cheers,
Rusty.
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace