From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:43855) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RU0DC-00009U-UZ for qemu-devel@nongnu.org; Fri, 25 Nov 2011 13:09:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RU0DA-0005m3-Fp for qemu-devel@nongnu.org; Fri, 25 Nov 2011 13:09:22 -0500 Received: from mx1.redhat.com ([209.132.183.28]:14247) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RU0DA-0005lu-4w for qemu-devel@nongnu.org; Fri, 25 Nov 2011 13:09:20 -0500 From: Kevin Wolf Date: Fri, 25 Nov 2011 19:12:11 +0100 Message-Id: <1322244735-12516-9-git-send-email-kwolf@redhat.com> In-Reply-To: <1322244735-12516-1-git-send-email-kwolf@redhat.com> References: <1322244735-12516-1-git-send-email-kwolf@redhat.com> Subject: [Qemu-devel] [PATCH 08/12] vmdk: Add migration blocker List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: anthony@codemonkey.ws Cc: kwolf@redhat.com, qemu-devel@nongnu.org VMDK caches L2 tables. For migration to work, they would have to be invalidated. Block migration for now. Signed-off-by: Kevin Wolf --- block/vmdk.c | 16 +++++++++++++++- 1 files changed, 15 insertions(+), 1 deletions(-) diff --git a/block/vmdk.c b/block/vmdk.c index 96f7d5d..f544159 100644 --- a/block/vmdk.c +++ b/block/vmdk.c @@ -26,6 +26,7 @@ #include "qemu-common.h" #include "block_int.h" #include "module.h" +#include "migration.h" #include #define VMDK3_MAGIC (('C' << 24) | ('O' << 16) | ('W' << 8) | 'D') @@ -97,6 +98,7 @@ typedef struct BDRVVmdkState { int num_extents; /* Extent array with num_extents entries, ascend ordered by address */ VmdkExtent *extents; + Error *migration_blocker; } BDRVVmdkState; typedef struct VmdkMetaData { @@ -659,7 +661,14 @@ static int vmdk_open(BlockDriverState *bs, int flags) } s->parent_cid = vmdk_read_cid(bs, 1); qemu_co_mutex_init(&s->lock); - return ret; + + /* Disable migration when VMDK images are used */ + error_set(&s->migration_blocker, + QERR_BLOCK_FORMAT_FEATURE_NOT_SUPPORTED, + "vmdk", bs->device_name, "live migration"); + migrate_add_blocker(s->migration_blocker); + + return 0; fail: vmdk_free_extents(bs); @@ -1504,7 +1513,12 @@ exit: static void vmdk_close(BlockDriverState *bs) { + BDRVVmdkState *s = bs->opaque; + vmdk_free_extents(bs); + + migrate_del_blocker(s->migration_blocker); + error_free(s->migration_blocker); } static coroutine_fn int vmdk_co_flush(BlockDriverState *bs) -- 1.7.6.4