[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH 09/19] block: write: Handle COR dependency after
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [RFC PATCH 09/19] block: write: Handle COR dependency after I/O throttling |
Date: |
Fri, 6 Dec 2013 18:22:50 +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 20ed857..f8ed623 100644
--- a/block.c
+++ b/block.c
@@ -2867,6 +2867,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);
@@ -2918,10 +2922,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] [RFC PATCH 00/19] block: Support for 512b-on-4k emulation, Kevin Wolf, 2013/12/06
- [Qemu-devel] [RFC PATCH 01/19] qemu_memalign: Allow small alignments, Kevin Wolf, 2013/12/06
- [Qemu-devel] [RFC PATCH 02/19] block: Detect unaligned length in bdrv_qiov_is_aligned(), Kevin Wolf, 2013/12/06
- [Qemu-devel] [RFC PATCH 03/19] block: Don't use guest sector size for qemu_blockalign(), Kevin Wolf, 2013/12/06
- [Qemu-devel] [RFC PATCH 04/19] block: rename buffer_alignment to guest_block_size, Kevin Wolf, 2013/12/06
- [Qemu-devel] [RFC PATCH 05/19] raw: Probe required direct I/O alignment, Kevin Wolf, 2013/12/06
- [Qemu-devel] [RFC PATCH 06/19] block: Introduce bdrv_aligned_preadv(), Kevin Wolf, 2013/12/06
- [Qemu-devel] [RFC PATCH 07/19] block: Introduce bdrv_co_do_preadv(), Kevin Wolf, 2013/12/06
- [Qemu-devel] [RFC PATCH 08/19] block: Introduce bdrv_aligned_pwritev(), Kevin Wolf, 2013/12/06
- [Qemu-devel] [RFC PATCH 09/19] block: write: Handle COR dependency after I/O throttling,
Kevin Wolf <=
- [Qemu-devel] [RFC PATCH 10/19] block: Introduce bdrv_co_do_pwritev(), Kevin Wolf, 2013/12/06
- [Qemu-devel] [RFC PATCH 11/19] block: Switch BdrvTrackedRequest to byte granularity, Kevin Wolf, 2013/12/06
- [Qemu-devel] [RFC PATCH 12/19] block: Allow waiting for overlapping requests between begin/end, Kevin Wolf, 2013/12/06
- [Qemu-devel] [RFC PATCH 13/19] block: Make zero-after-EOF work with larger alignment, Kevin Wolf, 2013/12/06
- [Qemu-devel] [RFC PATCH 14/19] block: Generalise and optimise COR serialisation, Kevin Wolf, 2013/12/06
- [Qemu-devel] [RFC PATCH 15/19] block: Make overlap range for serialisation dynamic, Kevin Wolf, 2013/12/06
- [Qemu-devel] [RFC PATCH 16/19] block: Align requests in bdrv_co_do_pwritev(), Kevin Wolf, 2013/12/06
- [Qemu-devel] [RFC PATCH 17/19] block: Change coroutine wrapper to byte granularity, Kevin Wolf, 2013/12/06
- [Qemu-devel] [RFC PATCH 18/19] block: Make bdrv_pread() a bdrv_prwv_co() wrapper, Kevin Wolf, 2013/12/06
- [Qemu-devel] [RFC PATCH 19/19] block: Make bdrv_pwrite() a bdrv_prwv_co() wrapper, Kevin Wolf, 2013/12/06