[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [PATCH 1/3] block: allow migration to work with image f
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] Re: [PATCH 1/3] block: allow migration to work with image files |
Date: |
Mon, 13 Sep 2010 10:21:44 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.12) Gecko/20100907 Fedora/3.0.7-1.fc12 Thunderbird/3.0.7 |
Am 11.09.2010 16:04, schrieb Anthony Liguori:
> Image files have two types of data: immutable data that describes things like
> image size, backing files, etc. and mutable data that includes offset and
> reference count tables.
>
> Today, image formats aggressively cache mutable data to improve performance.
> In
> some cases, this happens before a guest even starts. When dealing with live
> migration, since a file is open on two machines, the caching of meta data can
> lead to data corruption.
>
> This patch addresses this by introducing a mechanism to invalidate any cached
> mutable data a block driver may have which is then used by the live migration
> code.
>
> NB, this still requires coherent shared storage. Addressing migration without
> coherent shared storage (i.e. NFS) requires additional work.
>
> Signed-off-by: Anthony Liguori <address@hidden>
>
> diff --git a/block.c b/block.c
> index ebbc376..cd2ee31 100644
> --- a/block.c
> +++ b/block.c
> @@ -1453,6 +1453,22 @@ const char *bdrv_get_device_name(BlockDriverState *bs)
> return bs->device_name;
> }
>
> +void bdrv_invalidate_cache(BlockDriverState *bs)
> +{
> + if (bs->drv && bs->drv->bdrv_invalidate_cache) {
> + bs->drv->bdrv_invalidate_cache(bs);
> + }
> +}
There is a simple generic implementation:
drv = bs->drv;
drv->close(bs);
drv->open(bs, bs->open_flags);
Note that this only reopens e.g. the qcow2 layer, but not the image
file, which is bs->file.
This works for all simple case, that is, one format on top of one or
more protocols, where the protocols don't need invalidation. I think
this includes everything that is possible today. With -blockdev we might
need to revise this to include the lower layers, too. (But only
sometimes, because we don't want to reopen the file)
Kevin
- [Qemu-devel] [PATCH 1/3] block: allow migration to work with image files, (continued)
- [Qemu-devel] [PATCH 1/3] block: allow migration to work with image files, Anthony Liguori, 2010/09/11
- Re: [Qemu-devel] [PATCH 1/3] block: allow migration to work with image files, Avi Kivity, 2010/09/12
- Re: [Qemu-devel] [PATCH 1/3] block: allow migration to work with image files, Anthony Liguori, 2010/09/12
- Re: [Qemu-devel] [PATCH 1/3] block: allow migration to work with image files, Avi Kivity, 2010/09/12
- Re: [Qemu-devel] [PATCH 1/3] block: allow migration to work with image files, Anthony Liguori, 2010/09/12
- Re: [Qemu-devel] [PATCH 1/3] block: allow migration to work with image files, Avi Kivity, 2010/09/12
- Re: [Qemu-devel] [PATCH 1/3] block: allow migration to work with image files, Anthony Liguori, 2010/09/12
- Re: [Qemu-devel] [PATCH 1/3] block: allow migration to work with image files, Avi Kivity, 2010/09/12
- [Qemu-devel] Re: [PATCH 1/3] block: allow migration to work with image files, Juan Quintela, 2010/09/15
- [Qemu-devel] Re: [PATCH 1/3] block: allow migration to work with image files, Juan Quintela, 2010/09/15
[Qemu-devel] Re: [PATCH 1/3] block: allow migration to work with image files,
Kevin Wolf <=
[Qemu-devel] Re: [PATCH 1/3] block: allow migration to work with image files, Juan Quintela, 2010/09/15
Re: [Qemu-devel] [RFC][PATCH 0/3] Fix caching issues with live migration, Avi Kivity, 2010/09/12