[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 09/11] qcow2: mark image clean after repair succeeds
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 09/11] qcow2: mark image clean after repair succeeds |
Date: |
Fri, 10 Aug 2012 18:47:27 +0200 |
From: Stefan Hajnoczi <address@hidden>
The dirty bit is cleared after image repair succeeds in qcow2_open().
Move this into qcow2_check() so that all callers benefit from this
behavior when fix mode is enabled.
This is necessary so qemu-img check can call .bdrv_check() and mark the
image clean.
Signed-off-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
block/qcow2.c | 28 +++++++++++++++-------------
1 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/block/qcow2.c b/block/qcow2.c
index fd5e214..5896fd6 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -270,6 +270,20 @@ static int qcow2_mark_clean(BlockDriverState *bs)
return 0;
}
+static int qcow2_check(BlockDriverState *bs, BdrvCheckResult *result,
+ BdrvCheckMode fix)
+{
+ int ret = qcow2_check_refcounts(bs, result, fix);
+ if (ret < 0) {
+ return ret;
+ }
+
+ if (fix && result->check_errors == 0 && result->corruptions == 0) {
+ return qcow2_mark_clean(bs);
+ }
+ return ret;
+}
+
static int qcow2_open(BlockDriverState *bs, int flags)
{
BDRVQcowState *s = bs->opaque;
@@ -474,12 +488,7 @@ static int qcow2_open(BlockDriverState *bs, int flags)
!bs->read_only) {
BdrvCheckResult result = {0};
- ret = qcow2_check_refcounts(bs, &result, BDRV_FIX_ERRORS);
- if (ret < 0) {
- goto fail;
- }
-
- ret = qcow2_mark_clean(bs);
+ ret = qcow2_check(bs, &result, BDRV_FIX_ERRORS);
if (ret < 0) {
goto fail;
}
@@ -1568,13 +1577,6 @@ static int qcow2_get_info(BlockDriverState *bs,
BlockDriverInfo *bdi)
return 0;
}
-
-static int qcow2_check(BlockDriverState *bs, BdrvCheckResult *result,
- BdrvCheckMode fix)
-{
- return qcow2_check_refcounts(bs, result, fix);
-}
-
#if 0
static void dump_refcounts(BlockDriverState *bs)
{
--
1.7.6.5
- [Qemu-devel] [PULL 00/11] Block patches, Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 01/11] virtio-blk: fix use-after-free while handling scsi commands, Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 02/11] ahci: Fix ahci cdrom read corruptions for reads > 128k, Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 03/11] ahci: Fix sglist memleak in ahci_dma_rw_buf(), Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 05/11] virtio-blk: support VIRTIO_BLK_F_CONFIG_WCE, Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 04/11] qemu-iotests: Save some sed processes, Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 06/11] virtio-blk: disable write cache if not negotiated, Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 09/11] qcow2: mark image clean after repair succeeds,
Kevin Wolf <=
- [Qemu-devel] [PATCH 07/11] blockdev: flip default cache mode from writethrough to writeback, Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 08/11] qed: mark image clean after repair succeeds, Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 11/11] qemu-iotests: skip 039 with ./check -nocache, Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 10/11] block: add BLOCK_O_CHECK for qemu-img check, Kevin Wolf, 2012/08/10
- Re: [Qemu-devel] [PULL 00/11] Block patches, Anthony Liguori, 2012/08/12