qemu/include/block/dirty-bitmap.h
<<
>>
Prefs
   1#ifndef BLOCK_DIRTY_BITMAP_H
   2#define BLOCK_DIRTY_BITMAP_H
   3
   4#include "qemu-common.h"
   5#include "qemu/hbitmap.h"
   6
   7BdrvDirtyBitmap *bdrv_create_dirty_bitmap(BlockDriverState *bs,
   8                                          uint32_t granularity,
   9                                          const char *name,
  10                                          Error **errp);
  11void bdrv_create_meta_dirty_bitmap(BdrvDirtyBitmap *bitmap,
  12                                   int chunk_size);
  13void bdrv_release_meta_dirty_bitmap(BdrvDirtyBitmap *bitmap);
  14int bdrv_dirty_bitmap_create_successor(BlockDriverState *bs,
  15                                       BdrvDirtyBitmap *bitmap,
  16                                       Error **errp);
  17BdrvDirtyBitmap *bdrv_dirty_bitmap_abdicate(BlockDriverState *bs,
  18                                            BdrvDirtyBitmap *bitmap,
  19                                            Error **errp);
  20BdrvDirtyBitmap *bdrv_reclaim_dirty_bitmap(BlockDriverState *bs,
  21                                           BdrvDirtyBitmap *bitmap,
  22                                           Error **errp);
  23BdrvDirtyBitmap *bdrv_find_dirty_bitmap(BlockDriverState *bs,
  24                                        const char *name);
  25void bdrv_dirty_bitmap_make_anon(BdrvDirtyBitmap *bitmap);
  26void bdrv_release_dirty_bitmap(BlockDriverState *bs, BdrvDirtyBitmap *bitmap);
  27void bdrv_release_named_dirty_bitmaps(BlockDriverState *bs);
  28void bdrv_disable_dirty_bitmap(BdrvDirtyBitmap *bitmap);
  29void bdrv_enable_dirty_bitmap(BdrvDirtyBitmap *bitmap);
  30BlockDirtyInfoList *bdrv_query_dirty_bitmaps(BlockDriverState *bs);
  31uint32_t bdrv_get_default_bitmap_granularity(BlockDriverState *bs);
  32uint32_t bdrv_dirty_bitmap_granularity(BdrvDirtyBitmap *bitmap);
  33uint32_t bdrv_dirty_bitmap_meta_granularity(BdrvDirtyBitmap *bitmap);
  34bool bdrv_dirty_bitmap_enabled(BdrvDirtyBitmap *bitmap);
  35bool bdrv_dirty_bitmap_frozen(BdrvDirtyBitmap *bitmap);
  36const char *bdrv_dirty_bitmap_name(const BdrvDirtyBitmap *bitmap);
  37int64_t bdrv_dirty_bitmap_size(const BdrvDirtyBitmap *bitmap);
  38DirtyBitmapStatus bdrv_dirty_bitmap_status(BdrvDirtyBitmap *bitmap);
  39int bdrv_get_dirty(BlockDriverState *bs, BdrvDirtyBitmap *bitmap,
  40                   int64_t sector);
  41void bdrv_set_dirty_bitmap(BdrvDirtyBitmap *bitmap,
  42                           int64_t cur_sector, int64_t nr_sectors);
  43void bdrv_reset_dirty_bitmap(BdrvDirtyBitmap *bitmap,
  44                             int64_t cur_sector, int64_t nr_sectors);
  45int bdrv_dirty_bitmap_get_meta(BlockDriverState *bs,
  46                               BdrvDirtyBitmap *bitmap, int64_t sector,
  47                               int nb_sectors);
  48void bdrv_dirty_bitmap_reset_meta(BlockDriverState *bs,
  49                                  BdrvDirtyBitmap *bitmap, int64_t sector,
  50                                  int nb_sectors);
  51BdrvDirtyBitmapIter *bdrv_dirty_meta_iter_new(BdrvDirtyBitmap *bitmap);
  52BdrvDirtyBitmapIter *bdrv_dirty_iter_new(BdrvDirtyBitmap *bitmap,
  53                                         uint64_t first_sector);
  54void bdrv_dirty_iter_free(BdrvDirtyBitmapIter *iter);
  55int64_t bdrv_dirty_iter_next(BdrvDirtyBitmapIter *iter);
  56void bdrv_set_dirty_iter(BdrvDirtyBitmapIter *hbi, int64_t sector_num);
  57int64_t bdrv_get_dirty_count(BdrvDirtyBitmap *bitmap);
  58int64_t bdrv_get_meta_dirty_count(BdrvDirtyBitmap *bitmap);
  59void bdrv_dirty_bitmap_truncate(BlockDriverState *bs);
  60
  61uint64_t bdrv_dirty_bitmap_serialization_size(const BdrvDirtyBitmap *bitmap,
  62                                              uint64_t start, uint64_t count);
  63uint64_t bdrv_dirty_bitmap_serialization_align(const BdrvDirtyBitmap *bitmap);
  64void bdrv_dirty_bitmap_serialize_part(const BdrvDirtyBitmap *bitmap,
  65                                      uint8_t *buf, uint64_t start,
  66                                      uint64_t count);
  67void bdrv_dirty_bitmap_deserialize_part(BdrvDirtyBitmap *bitmap,
  68                                        uint8_t *buf, uint64_t start,
  69                                        uint64_t count, bool finish);
  70void bdrv_dirty_bitmap_deserialize_zeroes(BdrvDirtyBitmap *bitmap,
  71                                          uint64_t start, uint64_t count,
  72                                          bool finish);
  73void bdrv_dirty_bitmap_deserialize_finish(BdrvDirtyBitmap *bitmap);
  74
  75#endif
  76