[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH V2 4/7] qed: add bdrv_invalidate_cache to be called
From: |
Benoît Canet |
Subject: |
[Qemu-devel] [PATCH V2 4/7] qed: add bdrv_invalidate_cache to be called after incoming live migration |
Date: |
Wed, 21 Mar 2012 16:52:01 +0100 |
The QED image is reopened to flush metadata and check consistency.
Signed-off-by: Benoit Canet <address@hidden>
---
block/qed.c | 15 +++++++++++++++
block/qed.h | 1 +
2 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/block/qed.c b/block/qed.c
index a041d31..c47272c 100644
--- a/block/qed.c
+++ b/block/qed.c
@@ -375,6 +375,10 @@ static int bdrv_qed_open(BlockDriverState *bs, int flags)
int ret;
s->bs = bs;
+
+ /* backup flags for bdrv_qed_invalidate_cache */
+ s->flags = flags;
+
QSIMPLEQ_INIT(&s->allocating_write_reqs);
ret = bdrv_pread(bs->file, 0, &le_header, sizeof(le_header));
@@ -1516,6 +1520,16 @@ static int bdrv_qed_change_backing_file(BlockDriverState
*bs,
return ret;
}
+static void bdrv_qed_invalidate_cache(BlockDriverState *bs)
+{
+ BDRVQEDState *s = bs->opaque;
+ int flags = s->flags;
+
+ bdrv_qed_close(bs);
+ memset(s, 0, sizeof(BDRVQEDState));
+ bdrv_qed_open(bs, flags);
+}
+
static int bdrv_qed_check(BlockDriverState *bs, BdrvCheckResult *result)
{
BDRVQEDState *s = bs->opaque;
@@ -1568,6 +1582,7 @@ static BlockDriver bdrv_qed = {
.bdrv_getlength = bdrv_qed_getlength,
.bdrv_get_info = bdrv_qed_get_info,
.bdrv_change_backing_file = bdrv_qed_change_backing_file,
+ .bdrv_invalidate_cache = bdrv_qed_invalidate_cache,
.bdrv_check = bdrv_qed_check,
};
diff --git a/block/qed.h b/block/qed.h
index 62624a1..cb1ebd8 100644
--- a/block/qed.h
+++ b/block/qed.h
@@ -153,6 +153,7 @@ typedef struct QEDAIOCB {
typedef struct {
BlockDriverState *bs; /* device */
+ int flags; /* open flags */
uint64_t file_size; /* length of image file, in bytes */
QEDHeader header; /* always cpu-endian */
--
1.7.7.6
- [Qemu-devel] [PATCH V2 0/7] Make QED with live migration safe, Benoît Canet, 2012/03/21
- [Qemu-devel] [PATCH V2 2/7] block: add a function to clear incoming live migration flags, Benoît Canet, 2012/03/21
- [Qemu-devel] [PATCH V2 1/7] block: Add new BDRV_O_INCOMING flag to notice incoming live migration, Benoît Canet, 2012/03/21
- [Qemu-devel] [PATCH V2 7/7] qed: remove incoming live migration blocker, Benoît Canet, 2012/03/21
- [Qemu-devel] [PATCH V2 3/7] blockdev: open images with BDRV_O_INCOMING on incoming live migration, Benoît Canet, 2012/03/21
- [Qemu-devel] [PATCH V2 6/7] qed: honor BDRV_O_INCOMING for incoming live migration, Benoît Canet, 2012/03/21
- [Qemu-devel] [PATCH V2 5/7] migration: clear BDRV_O_INCOMING flags on end of incoming live migration, Benoît Canet, 2012/03/21
- [Qemu-devel] [PATCH V2 4/7] qed: add bdrv_invalidate_cache to be called after incoming live migration,
Benoît Canet <=