qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 4/8] block: add bdrv_load_dirty_bitmap


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [PATCH 4/8] block: add bdrv_load_dirty_bitmap
Date: Tue, 9 Jun 2015 17:01:22 +0100
User-agent: Mutt/1.5.23 (2014-03-12)

On Mon, Jun 08, 2015 at 06:21:22PM +0300, Vladimir Sementsov-Ogievskiy wrote:
> +BdrvDirtyBitmap *bdrv_load_dirty_bitmap(BlockDriverState *bs,
> +                                        BlockDriverState *file,
> +                                        int granularity,
> +                                        const char *name,
> +                                        Error **errp)
> +{
> +    BlockDriver *drv = file->drv;
> +    if (!drv) {
> +        return NULL;
> +    }
> +    if (drv->bdrv_dirty_bitmap_load) {
> +        BdrvDirtyBitmap *bitmap;
> +        uint64_t bitmap_size = bdrv_nb_sectors(bs);
> +        uint8_t *buf = drv->bdrv_dirty_bitmap_load(file, name, bitmap_size,
> +                                                   granularity);
> +        if (buf == NULL) {
> +            return NULL;
> +        }
> +
> +        bitmap = bdrv_create_dirty_bitmap(bs, granularity, name, errp);
> +        if (bitmap == NULL) {
> +            g_free(buf);
> +            return NULL;
> +        }
> +
> +        hbitmap_deserialize_part(bitmap->bitmap, buf, 0, bitmap_size);
> +        hbitmap_deserialize_finish(bitmap->bitmap);

How about passing bitmap and errp into drv->bdrv_dirty_bitmap_load?
That way bdrv_dirty_bitmap_load() can stream using
hbitmap_deserialize_part() and does not need to allocate the full
bitmap.  It can also report errors properly.

Attachment: pgpiffqjplwwl.pgp
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]