qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [RFC PATCH 08/10] qed: add bdrv_post_incoming_migration ope


From: Benoît Canet
Subject: [Qemu-devel] [RFC PATCH 08/10] qed: add bdrv_post_incoming_migration operation checking the image
Date: Tue, 6 Mar 2012 18:32:27 +0100

The bs is closed on verification failure to avoid further corruptions.

Signed-off-by: Benoit Canet <address@hidden>
---
 block.h     |    1 +
 block/qed.c |   14 ++++++++++++++
 migration.c |    1 +
 3 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/block.h b/block.h
index 1323086..25b66f0 100644
--- a/block.h
+++ b/block.h
@@ -221,6 +221,7 @@ BlockDriverAIOCB *bdrv_aio_ioctl(BlockDriverState *bs,
 
 /* Do post incoming migration operations
  * Ex: flush mutable metadata
+ * Ex: check image
  */
 void bdrv_post_incoming_migration(BlockDriverState *bs);
 void bdrv_post_incoming_migration_all(void);
diff --git a/block/qed.c b/block/qed.c
index 25558fc..f6300af 100644
--- a/block/qed.c
+++ b/block/qed.c
@@ -1529,6 +1529,19 @@ static int bdrv_qed_change_backing_file(BlockDriverState 
*bs,
     return ret;
 }
 
+static void bdrv_qed_check_if_needed(BlockDriverState *bs)
+{
+    /* close the block device if the verification fail */
+    if (check_image_if_needed(bs)) {
+        bdrv_close(bs);
+    }
+}
+
+static void bdrv_qed_post_incoming_migration(BlockDriverState *bs)
+{
+    bdrv_qed_check_if_needed(bs);
+}
+
 static int bdrv_qed_check(BlockDriverState *bs, BdrvCheckResult *result)
 {
     BDRVQEDState *s = bs->opaque;
@@ -1581,6 +1594,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_post_incoming_migration = bdrv_qed_post_incoming_migration,
     .bdrv_check               = bdrv_qed_check,
 };
 
diff --git a/migration.c b/migration.c
index 5ac31a3..d59042c 100644
--- a/migration.c
+++ b/migration.c
@@ -95,6 +95,7 @@ void process_incoming_migration(QEMUFile *f)
     bdrv_clear_incoming_migration_all();
     /* Execute post incoming migration operations :
      * for qcow2 make sure to flush mutable metadata
+     * for QED check image
      **/
     bdrv_post_incoming_migration_all();
 
-- 
1.7.7.6




reply via email to

[Prev in Thread] Current Thread [Next in Thread]