[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 12/24] block: write: Handle COR dependency after
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH v2 12/24] block: write: Handle COR dependency after I/O throttling |
Date: |
Fri, 13 Dec 2013 14:22:47 +0100 |
First waiting for all COR requests to complete and calling the
throttling function afterwards means that the request could be delayed
and we still need to wait for the COR request even if it was issued only
after the throttled write request.
Signed-off-by: Kevin Wolf <address@hidden>
---
block.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/block.c b/block.c
index e26e31c..385fb8a 100644
--- a/block.c
+++ b/block.c
@@ -2973,6 +2973,10 @@ static int coroutine_fn
bdrv_aligned_pwritev(BlockDriverState *bs,
assert((offset & (BDRV_SECTOR_SIZE - 1)) == 0);
assert((bytes & (BDRV_SECTOR_SIZE - 1)) == 0);
+ if (bs->copy_on_read_in_flight) {
+ wait_for_overlapping_requests(bs, sector_num, nb_sectors);
+ }
+
tracked_request_begin(&req, bs, sector_num, nb_sectors, true);
ret = notifier_with_return_list_notify(&bs->before_write_notifiers, &req);
@@ -3022,10 +3026,6 @@ static int coroutine_fn
bdrv_co_do_writev(BlockDriverState *bs,
return -EIO;
}
- if (bs->copy_on_read_in_flight) {
- wait_for_overlapping_requests(bs, sector_num, nb_sectors);
- }
-
/* throttling disk I/O */
if (bs->io_limits_enabled) {
bdrv_io_limits_intercept(bs, nb_sectors, true);
--
1.8.1.4
- [Qemu-devel] [PATCH v2 06/24] block: Don't use guest sector size for qemu_blockalign(), (continued)
- [Qemu-devel] [PATCH v2 06/24] block: Don't use guest sector size for qemu_blockalign(), Kevin Wolf, 2013/12/13
- [Qemu-devel] [PATCH v2 07/24] block: rename buffer_alignment to guest_block_size, Kevin Wolf, 2013/12/13
- [Qemu-devel] [PATCH v2 08/24] raw: Probe required direct I/O alignment, Kevin Wolf, 2013/12/13
- [Qemu-devel] [PATCH v2 05/24] block: Detect unaligned length in bdrv_qiov_is_aligned(), Kevin Wolf, 2013/12/13
- [Qemu-devel] [PATCH v2 09/24] block: Introduce bdrv_aligned_preadv(), Kevin Wolf, 2013/12/13
- [Qemu-devel] [PATCH v2 10/24] block: Introduce bdrv_co_do_preadv(), Kevin Wolf, 2013/12/13
- [Qemu-devel] [PATCH v2 11/24] block: Introduce bdrv_aligned_pwritev(), Kevin Wolf, 2013/12/13
- [Qemu-devel] [PATCH v2 12/24] block: write: Handle COR dependency after I/O throttling,
Kevin Wolf <=
- [Qemu-devel] [PATCH v2 13/24] block: Introduce bdrv_co_do_pwritev(), Kevin Wolf, 2013/12/13
- [Qemu-devel] [PATCH v2 14/24] block: Switch BdrvTrackedRequest to byte granularity, Kevin Wolf, 2013/12/13
- [Qemu-devel] [PATCH v2 16/24] block: Make zero-after-EOF work with larger alignment, Kevin Wolf, 2013/12/13
- [Qemu-devel] [PATCH v2 15/24] block: Allow waiting for overlapping requests between begin/end, Kevin Wolf, 2013/12/13
- [Qemu-devel] [PATCH v2 17/24] block: Generalise and optimise COR serialisation, Kevin Wolf, 2013/12/13
- [Qemu-devel] [PATCH v2 19/24] block: Allow wait_serialising_requests() at any point, Kevin Wolf, 2013/12/13
- [Qemu-devel] [PATCH v2 18/24] block: Make overlap range for serialisation dynamic, Kevin Wolf, 2013/12/13
- [Qemu-devel] [PATCH v2 20/24] block: Align requests in bdrv_co_do_pwritev(), Kevin Wolf, 2013/12/13
- [Qemu-devel] [PATCH v2 21/24] block: Change coroutine wrapper to byte granularity, Kevin Wolf, 2013/12/13