[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH 09/10] qcow2: Make image inaccessible after failed q
From: |
Kevin Wolf |
Subject: |
[Qemu-block] [PATCH 09/10] qcow2: Make image inaccessible after failed qcow2_invalidate_cache() |
Date: |
Tue, 22 Dec 2015 17:46:25 +0100 |
If qcow2_invalidate_cache() fails, we are in a state where qcow2_close()
has already been completed, but the image hasn't been reopened yet.
Calling into any qcow2 function for an image in this state will cause
crashes.
The real solution would be to get rid of the close/open pair and instead
do an atomic reset of the involved data structures, but this isn't
trivial, so let's just make the image inaccessible for now.
Signed-off-by: Kevin Wolf <address@hidden>
---
block/qcow2.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/block/qcow2.c b/block/qcow2.c
index de50b80..544c124 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -1763,6 +1763,7 @@ static void qcow2_invalidate_cache(BlockDriverState *bs,
Error **errp)
bdrv_invalidate_cache(bs->file->bs, &local_err);
if (local_err) {
error_propagate(errp, local_err);
+ bs->drv = NULL;
return;
}
@@ -1776,9 +1777,11 @@ static void qcow2_invalidate_cache(BlockDriverState *bs,
Error **errp)
error_setg(errp, "Could not reopen qcow2 layer: %s",
error_get_pretty(local_err));
error_free(local_err);
+ bs->drv = NULL;
return;
} else if (ret < 0) {
error_setg_errno(errp, -ret, "Could not reopen qcow2 layer");
+ bs->drv = NULL;
return;
}
--
1.8.3.1
- Re: [Qemu-block] [PATCH 05/10] block: Inactivate BDS when migration completes, (continued)
- [Qemu-block] [PATCH 07/10] qcow2: Implement .bdrv_inactivate, Kevin Wolf, 2015/12/22
- [Qemu-block] [PATCH 08/10] qcow2: Fix BDRV_O_INCOMING handling in qcow2_invalidate_cache(), Kevin Wolf, 2015/12/22
- [Qemu-block] [PATCH 06/10] qemu-img: Prepare for locked images, Kevin Wolf, 2015/12/22
- [Qemu-block] [PATCH 09/10] qcow2: Make image inaccessible after failed qcow2_invalidate_cache(),
Kevin Wolf <=
- [Qemu-block] [PATCH 10/10] qcow2: Add image locking, Kevin Wolf, 2015/12/22
- Re: [Qemu-block] [Qemu-devel] [PATCH 00/10] qcow2: Implement image locking, Fam Zheng, 2015/12/22