[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [Qemu-devel] [PATCH] block/snapshot: dirty all dirty bi
From: |
John Snow |
Subject: |
Re: [Qemu-block] [Qemu-devel] [PATCH] block/snapshot: dirty all dirty bitmaps on snapshot-switch |
Date: |
Thu, 2 Nov 2017 16:55:03 -0400 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 |
On 10/23/2017 05:29 AM, Vladimir Sementsov-Ogievskiy wrote:
> Snapshot-switch actually changes active state of disk so it should
> reflect on dirty bitmaps. Otherwise next incremental backup using
> these bitmaps will be invalid.
>
Good call. I knew that snapshots weren't compatible, but this makes it
more obvious and less error-prone to an end user.
> Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Reviewed-by: John Snow <address@hidden>
> ---
> block/snapshot.c | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/block/snapshot.c b/block/snapshot.c
> index a46564e7b7..1d5ab5f90f 100644
> --- a/block/snapshot.c
> +++ b/block/snapshot.c
> @@ -181,10 +181,24 @@ int bdrv_snapshot_goto(BlockDriverState *bs,
> {
> BlockDriver *drv = bs->drv;
> int ret, open_ret;
> + int64_t len;
>
> if (!drv) {
> return -ENOMEDIUM;
> }
> +
> + len = bdrv_getlength(bs);
> + if (len < 0) {
> + return len;
> + }
> + /* We should set all bits in all enabled dirty bitmaps, because dirty
> + * bitmaps reflect active state of disk and snapshot switch operation
> + * actually dirties active state.
> + * TODO: It may make sense not to set all bits but analyze block status
> of
> + * current state and destination snapshot and do not set bits
> corresponding
> + * to both-zero or both-unallocated areas. */
> + bdrv_set_dirty(bs, 0, len);
> +
> if (drv->bdrv_snapshot_goto) {
> return drv->bdrv_snapshot_goto(bs, snapshot_id);
> }
>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-block] [Qemu-devel] [PATCH] block/snapshot: dirty all dirty bitmaps on snapshot-switch,
John Snow <=