[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 09/15] block: clear dirty bitmap when discarding
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PATCH 09/15] block: clear dirty bitmap when discarding |
Date: |
Tue, 15 Jan 2013 17:48:25 +0100 |
From: Paolo Bonzini <address@hidden>
Note that resetting bits in the dirty bitmap is done _before_ actually
processing the request. Writes, instead, set bits after the request
is completed.
This way, when there are concurrent write and discard requests, the
outcome will always be that the blocks are marked dirty. This scenario
should never happen, but it is safer to do it this way.
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
block.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/block.c b/block.c
index 4a90dd1..6fa7c90 100644
--- a/block.c
+++ b/block.c
@@ -4170,7 +4170,13 @@ int coroutine_fn bdrv_co_discard(BlockDriverState *bs,
int64_t sector_num,
return -EIO;
} else if (bs->read_only) {
return -EROFS;
- } else if (bs->drv->bdrv_co_discard) {
+ }
+
+ if (bs->dirty_bitmap) {
+ set_dirty_bitmap(bs, sector_num, nb_sectors, 0);
+ }
+
+ if (bs->drv->bdrv_co_discard) {
return bs->drv->bdrv_co_discard(bs, sector_num, nb_sectors);
} else if (bs->drv->bdrv_aio_discard) {
BlockDriverAIOCB *acb;
--
1.8.0.2
- [Qemu-devel] [PULL 00/15] Block patches for QEMU 1.4, Stefan Hajnoczi, 2013/01/15
- [Qemu-devel] [PATCH 01/15] qcow2: Fix segfault on zero-length write, Stefan Hajnoczi, 2013/01/15
- [Qemu-devel] [PATCH 05/15] raw: support discard on block devices, Stefan Hajnoczi, 2013/01/15
- [Qemu-devel] [PATCH 02/15] block: fix initialization in bdrv_io_limits_enable(), Stefan Hajnoczi, 2013/01/15
- [Qemu-devel] [PATCH 04/15] raw-posix: remember whether discard failed, Stefan Hajnoczi, 2013/01/15
- [Qemu-devel] [PATCH 03/15] raw-posix: support discard on more filesystems, Stefan Hajnoczi, 2013/01/15
- [Qemu-devel] [PATCH 06/15] block: make discard asynchronous, Stefan Hajnoczi, 2013/01/15
- [Qemu-devel] [PATCH 07/15] ide: fix TRIM with empty range entry, Stefan Hajnoczi, 2013/01/15
- [Qemu-devel] [PATCH 08/15] ide: issue discard asynchronously but serialize the pieces, Stefan Hajnoczi, 2013/01/15
- [Qemu-devel] [PATCH 09/15] block: clear dirty bitmap when discarding,
Stefan Hajnoczi <=
- [Qemu-devel] [PATCH 12/15] w32: Make qemu_vfree() accept NULL like the POSIX implementation, Stefan Hajnoczi, 2013/01/15
- [Qemu-devel] [PATCH 11/15] sheepdog: clean up sd_aio_setup(), Stefan Hajnoczi, 2013/01/15
- [Qemu-devel] [PATCH 13/15] scsi-disk: qemu_vfree(NULL) is fine, simplify, Stefan Hajnoczi, 2013/01/15
- [Qemu-devel] [PATCH 14/15] win32-aio: Fix how win32_aio_process_completion() frees buffer, Stefan Hajnoczi, 2013/01/15
- [Qemu-devel] [PATCH 15/15] block: Fix how mirror_run() frees its buffer, Stefan Hajnoczi, 2013/01/15
- [Qemu-devel] [PATCH 10/15] sheepdog: multiplex the rw FD to flush cache, Stefan Hajnoczi, 2013/01/15
- Re: [Qemu-devel] [PULL 00/15] Block patches for QEMU 1.4, Anthony Liguori, 2013/01/15