diff options
author | cl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk> | 2005-12-04 18:24:24 +0100 |
---|---|---|
committer | cl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk> | 2005-12-04 18:24:24 +0100 |
commit | f41cb4d2cc5032afefa5395c53c8bbf6245576c3 (patch) | |
tree | 971fdec2743777ef5343d6424005a535d3299762 | |
parent | 127515a94353a6724e5b4207cde892f10df96053 (diff) | |
parent | 1e4b462e21ccdf69ef19152374b28a4f5df03701 (diff) | |
download | xen-f41cb4d2cc5032afefa5395c53c8bbf6245576c3.tar.gz xen-f41cb4d2cc5032afefa5395c53c8bbf6245576c3.tar.bz2 xen-f41cb4d2cc5032afefa5395c53c8bbf6245576c3.zip |
Merge
-rw-r--r-- | linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c b/linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c index fcc6c12de4..d9aee65e69 100644 --- a/linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c +++ b/linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c @@ -493,12 +493,12 @@ static void make_response(blkif_t *blkif, unsigned long id, blk_ring->rsp_prod_pvt++; RING_PUSH_RESPONSES_AND_CHECK_NOTIFY(blk_ring, notify); - /* - * Tail check for pending requests. Allows frontend to avoid - * notifications if requests are already in flight (lower overheads - * and promotes batching). - */ if (blk_ring->rsp_prod_pvt == blk_ring->req_cons) { + /* + * Tail check for pending requests. Allows frontend to avoid + * notifications if requests are already in flight (lower + * overheads and promotes batching). + */ int more_to_do; RING_FINAL_CHECK_FOR_REQUESTS(blk_ring, more_to_do); if (more_to_do) { @@ -506,6 +506,12 @@ static void make_response(blkif_t *blkif, unsigned long id, maybe_trigger_blkio_schedule(); } } + else if (!__on_blkdev_list(blkif) + && RING_HAS_UNCONSUMED_REQUESTS(blk_ring)) { + /* Keep pulling requests as they become available... */ + add_to_blkdev_list_tail(blkif); + maybe_trigger_blkio_schedule(); + } spin_unlock_irqrestore(&blkif->blk_ring_lock, flags); |