[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 17/24] block: mark blocks dirty on coroutine write c
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 17/24] block: mark blocks dirty on coroutine write completion |
Date: |
Fri, 14 Oct 2011 18:49:12 +0200 |
From: Stefan Hajnoczi <address@hidden>
The aio write operation marks blocks dirty when the write operation
completes. The coroutine write operation marks blocks dirty before
issuing the write operation.
It seems safest to mark the block dirty when the operation completes so
that anything tracking dirty blocks will not act before the change has
been made to the image file.
Make the coroutine write operation dirty blocks on write completion.
Signed-off-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
block.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/block.c b/block.c
index e94fa61..02e15ca 100644
--- a/block.c
+++ b/block.c
@@ -1311,6 +1311,7 @@ static int coroutine_fn
bdrv_co_do_writev(BlockDriverState *bs,
int64_t sector_num, int nb_sectors, QEMUIOVector *qiov)
{
BlockDriver *drv = bs->drv;
+ int ret;
if (!bs->drv) {
return -ENOMEDIUM;
@@ -1322,6 +1323,8 @@ static int coroutine_fn
bdrv_co_do_writev(BlockDriverState *bs,
return -EIO;
}
+ ret = drv->bdrv_co_writev(bs, sector_num, nb_sectors, qiov);
+
if (bs->dirty_bitmap) {
set_dirty_bitmap(bs, sector_num, nb_sectors, 1);
}
@@ -1330,7 +1333,7 @@ static int coroutine_fn
bdrv_co_do_writev(BlockDriverState *bs,
bs->wr_highest_sector = sector_num + nb_sectors - 1;
}
- return drv->bdrv_co_writev(bs, sector_num, nb_sectors, qiov);
+ return ret;
}
int coroutine_fn bdrv_co_writev(BlockDriverState *bs, int64_t sector_num,
--
1.7.6.4
- [Qemu-devel] [PATCH 08/24] HMP: Print 'io-status' information, (continued)
- [Qemu-devel] [PATCH 08/24] HMP: Print 'io-status' information, Kevin Wolf, 2011/10/14
- [Qemu-devel] [PATCH 09/24] block/vvfat: Fix potential memory leaks and other memory errors, Kevin Wolf, 2011/10/14
- [Qemu-devel] [PATCH 06/24] scsi: Support I/O status, Kevin Wolf, 2011/10/14
- [Qemu-devel] [PATCH 13/24] block: directly invoke .bdrv_* from emulation functions, Kevin Wolf, 2011/10/14
- [Qemu-devel] [PATCH 11/24] vvfat: Fix potential buffer overflow, Kevin Wolf, 2011/10/14
- [Qemu-devel] [PATCH 10/24] block/vvfat: Remove unused code, Kevin Wolf, 2011/10/14
- [Qemu-devel] [PATCH 12/24] block: directly invoke .bdrv_aio_*() in bdrv_co_io_em(), Kevin Wolf, 2011/10/14
- [Qemu-devel] [PATCH 14/24] block: split out bdrv_co_do_readv() and bdrv_co_do_writev(), Kevin Wolf, 2011/10/14
- [Qemu-devel] [PATCH 15/24] block: switch bdrv_read()/bdrv_write() to coroutines, Kevin Wolf, 2011/10/14
- [Qemu-devel] [PATCH 17/24] block: mark blocks dirty on coroutine write completion,
Kevin Wolf <=
- [Qemu-devel] [PATCH 16/24] block: switch bdrv_aio_readv() to coroutines, Kevin Wolf, 2011/10/14
- [Qemu-devel] [PATCH 18/24] block: switch bdrv_aio_writev() to coroutines, Kevin Wolf, 2011/10/14
- [Qemu-devel] [PATCH 19/24] linux-aio: Allow reads beyond the end of growable images, Kevin Wolf, 2011/10/14
- [Qemu-devel] [PATCH 20/24] block: drop emulation functions that use coroutines, Kevin Wolf, 2011/10/14
- [Qemu-devel] [PATCH 23/24] block: drop .bdrv_read()/.bdrv_write() emulation, Kevin Wolf, 2011/10/14
- [Qemu-devel] [PATCH 22/24] block: use coroutine interface for raw format, Kevin Wolf, 2011/10/14
- [Qemu-devel] [PATCH 24/24] block: drop bdrv_has_async_rw(), Kevin Wolf, 2011/10/14
- [Qemu-devel] [PATCH 21/24] raw-posix: remove bdrv_read()/bdrv_write(), Kevin Wolf, 2011/10/14
- Re: [Qemu-devel] [PULL 00/24] Block patches, Anthony Liguori, 2011/10/14