From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:43757) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S4yGD-0001VE-Fq for qemu-devel@nongnu.org; Tue, 06 Mar 2012 12:33:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S4yFi-00055d-TP for qemu-devel@nongnu.org; Tue, 06 Mar 2012 12:33:17 -0500 Received: from mail-wi0-f173.google.com ([209.85.212.173]:54954) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S4yFi-00053S-Jk for qemu-devel@nongnu.org; Tue, 06 Mar 2012 12:32:46 -0500 Received: by mail-wi0-f173.google.com with SMTP id hi18so3485888wib.4 for ; Tue, 06 Mar 2012 09:32:45 -0800 (PST) From: =?UTF-8?q?Beno=C3=AEt=20Canet?= Date: Tue, 6 Mar 2012 18:32:27 +0100 Message-Id: <1331055149-10982-9-git-send-email-benoit.canet@gmail.com> In-Reply-To: <1331055149-10982-1-git-send-email-benoit.canet@gmail.com> References: <1331055149-10982-1-git-send-email-benoit.canet@gmail.com> Subject: [Qemu-devel] [RFC PATCH 08/10] qed: add bdrv_post_incoming_migration operation checking the image List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: pbonzini@redhat.com, =?UTF-8?q?Beno=C3=AEt=20Canet?= , stefanha@linux.vnet.ibm.com, wolf@redhat.com The bs is closed on verification failure to avoid further corruptions. Signed-off-by: Benoit Canet --- 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