From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:43603) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S4yFv-0000fn-Jg for qemu-devel@nongnu.org; Tue, 06 Mar 2012 12:33:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S4yFb-00054a-OP for qemu-devel@nongnu.org; Tue, 06 Mar 2012 12:32:59 -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 1S4yFb-00053S-FH for qemu-devel@nongnu.org; Tue, 06 Mar 2012 12:32:39 -0500 Received: by mail-wi0-f173.google.com with SMTP id hi18so3485888wib.4 for ; Tue, 06 Mar 2012 09:32:38 -0800 (PST) From: =?UTF-8?q?Beno=C3=AEt=20Canet?= Date: Tue, 6 Mar 2012 18:32:22 +0100 Message-Id: <1331055149-10982-4-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 03/10] block: add a function to clear incoming live migration 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 This function is to be called to inform the block layer that an incoming live migration has been canceled or has just finished. It will also clear all BDRV_O_INCOMING flags. Signed-off-by: Benoit Canet --- block.c | 13 +++++++++++++ block.h | 1 + 2 files changed, 14 insertions(+), 0 deletions(-) diff --git a/block.c b/block.c index 3e2260d..889d464 100644 --- a/block.c +++ b/block.c @@ -3588,6 +3588,19 @@ void bdrv_set_incoming_migration(void) incoming_migration = true; } +void bdrv_clear_incoming_migration_all(void) +{ + BlockDriverState *bs; + + assert(incoming_migration == true); + + incoming_migration = false; + + QTAILQ_FOREACH(bs, &bdrv_states, list) { + bs->open_flags = bs->open_flags & ~(BDRV_O_INCOMING); + } +} + int bdrv_flush(BlockDriverState *bs) { Coroutine *co; diff --git a/block.h b/block.h index 23af1cc..2ddf9c5 100644 --- a/block.h +++ b/block.h @@ -224,6 +224,7 @@ void bdrv_invalidate_cache(BlockDriverState *bs); void bdrv_invalidate_cache_all(void); void bdrv_set_incoming_migration(void); +void bdrv_clear_incoming_migration_all(void); /* Ensure contents are flushed to disk. */ int bdrv_flush(BlockDriverState *bs); -- 1.7.7.6