]>
Commit | Line | Data |
---|---|---|
ebab2259 FZ |
1 | #ifndef BLOCK_DIRTY_BITMAP_H |
2 | #define BLOCK_DIRTY_BITMAP_H | |
3 | ||
4 | #include "qemu-common.h" | |
9af23989 | 5 | #include "qapi/qapi-types-block-core.h" |
ebab2259 FZ |
6 | #include "qemu/hbitmap.h" |
7 | ||
8 | BdrvDirtyBitmap *bdrv_create_dirty_bitmap(BlockDriverState *bs, | |
9 | uint32_t granularity, | |
10 | const char *name, | |
11 | Error **errp); | |
fb933437 FZ |
12 | void bdrv_create_meta_dirty_bitmap(BdrvDirtyBitmap *bitmap, |
13 | int chunk_size); | |
14 | void bdrv_release_meta_dirty_bitmap(BdrvDirtyBitmap *bitmap); | |
ebab2259 FZ |
15 | int bdrv_dirty_bitmap_create_successor(BlockDriverState *bs, |
16 | BdrvDirtyBitmap *bitmap, | |
17 | Error **errp); | |
18 | BdrvDirtyBitmap *bdrv_dirty_bitmap_abdicate(BlockDriverState *bs, | |
19 | BdrvDirtyBitmap *bitmap, | |
20 | Error **errp); | |
21 | BdrvDirtyBitmap *bdrv_reclaim_dirty_bitmap(BlockDriverState *bs, | |
22 | BdrvDirtyBitmap *bitmap, | |
23 | Error **errp); | |
e73a265e | 24 | void bdrv_dirty_bitmap_enable_successor(BdrvDirtyBitmap *bitmap); |
ebab2259 FZ |
25 | BdrvDirtyBitmap *bdrv_find_dirty_bitmap(BlockDriverState *bs, |
26 | const char *name); | |
ebab2259 FZ |
27 | void bdrv_release_dirty_bitmap(BlockDriverState *bs, BdrvDirtyBitmap *bitmap); |
28 | void bdrv_release_named_dirty_bitmaps(BlockDriverState *bs); | |
56f364e6 VSO |
29 | void bdrv_remove_persistent_dirty_bitmap(BlockDriverState *bs, |
30 | const char *name, | |
31 | Error **errp); | |
ebab2259 FZ |
32 | void bdrv_disable_dirty_bitmap(BdrvDirtyBitmap *bitmap); |
33 | void bdrv_enable_dirty_bitmap(BdrvDirtyBitmap *bitmap); | |
92bcea40 | 34 | void bdrv_enable_dirty_bitmap_locked(BdrvDirtyBitmap *bitmap); |
ebab2259 FZ |
35 | BlockDirtyInfoList *bdrv_query_dirty_bitmaps(BlockDriverState *bs); |
36 | uint32_t bdrv_get_default_bitmap_granularity(BlockDriverState *bs); | |
ba06ff1a | 37 | uint32_t bdrv_dirty_bitmap_granularity(const BdrvDirtyBitmap *bitmap); |
ebab2259 FZ |
38 | bool bdrv_dirty_bitmap_enabled(BdrvDirtyBitmap *bitmap); |
39 | bool bdrv_dirty_bitmap_frozen(BdrvDirtyBitmap *bitmap); | |
15891fac FZ |
40 | const char *bdrv_dirty_bitmap_name(const BdrvDirtyBitmap *bitmap); |
41 | int64_t bdrv_dirty_bitmap_size(const BdrvDirtyBitmap *bitmap); | |
ebab2259 | 42 | DirtyBitmapStatus bdrv_dirty_bitmap_status(BdrvDirtyBitmap *bitmap); |
ebab2259 | 43 | void bdrv_set_dirty_bitmap(BdrvDirtyBitmap *bitmap, |
e0d7f73e | 44 | int64_t offset, int64_t bytes); |
ebab2259 | 45 | void bdrv_reset_dirty_bitmap(BdrvDirtyBitmap *bitmap, |
e0d7f73e | 46 | int64_t offset, int64_t bytes); |
6d3f4049 | 47 | BdrvDirtyBitmapIter *bdrv_dirty_meta_iter_new(BdrvDirtyBitmap *bitmap); |
715a74d8 | 48 | BdrvDirtyBitmapIter *bdrv_dirty_iter_new(BdrvDirtyBitmap *bitmap); |
dc162c8e | 49 | void bdrv_dirty_iter_free(BdrvDirtyBitmapIter *iter); |
ebab2259 | 50 | |
882c36f5 | 51 | uint64_t bdrv_dirty_bitmap_serialization_size(const BdrvDirtyBitmap *bitmap, |
86f6ae67 | 52 | uint64_t offset, uint64_t bytes); |
882c36f5 VSO |
53 | uint64_t bdrv_dirty_bitmap_serialization_align(const BdrvDirtyBitmap *bitmap); |
54 | void bdrv_dirty_bitmap_serialize_part(const BdrvDirtyBitmap *bitmap, | |
86f6ae67 EB |
55 | uint8_t *buf, uint64_t offset, |
56 | uint64_t bytes); | |
882c36f5 | 57 | void bdrv_dirty_bitmap_deserialize_part(BdrvDirtyBitmap *bitmap, |
86f6ae67 EB |
58 | uint8_t *buf, uint64_t offset, |
59 | uint64_t bytes, bool finish); | |
882c36f5 | 60 | void bdrv_dirty_bitmap_deserialize_zeroes(BdrvDirtyBitmap *bitmap, |
86f6ae67 | 61 | uint64_t offset, uint64_t bytes, |
882c36f5 | 62 | bool finish); |
6bdc8b71 | 63 | void bdrv_dirty_bitmap_deserialize_ones(BdrvDirtyBitmap *bitmap, |
86f6ae67 | 64 | uint64_t offset, uint64_t bytes, |
6bdc8b71 | 65 | bool finish); |
882c36f5 VSO |
66 | void bdrv_dirty_bitmap_deserialize_finish(BdrvDirtyBitmap *bitmap); |
67 | ||
d6883bc9 | 68 | void bdrv_dirty_bitmap_set_readonly(BdrvDirtyBitmap *bitmap, bool value); |
a88b179f VSO |
69 | void bdrv_dirty_bitmap_set_persistance(BdrvDirtyBitmap *bitmap, |
70 | bool persistent); | |
4f43e953 | 71 | void bdrv_dirty_bitmap_set_qmp_locked(BdrvDirtyBitmap *bitmap, bool qmp_locked); |
b598e531 | 72 | void bdrv_merge_dirty_bitmap(BdrvDirtyBitmap *dest, const BdrvDirtyBitmap *src, |
fa000f2f | 73 | HBitmap **backup, Error **errp); |
9c98f145 | 74 | void bdrv_dirty_bitmap_set_migration(BdrvDirtyBitmap *bitmap, bool migration); |
d6883bc9 | 75 | |
b64bd51e PB |
76 | /* Functions that require manual locking. */ |
77 | void bdrv_dirty_bitmap_lock(BdrvDirtyBitmap *bitmap); | |
78 | void bdrv_dirty_bitmap_unlock(BdrvDirtyBitmap *bitmap); | |
3b5d4df0 EB |
79 | bool bdrv_get_dirty_locked(BlockDriverState *bs, BdrvDirtyBitmap *bitmap, |
80 | int64_t offset); | |
b64bd51e | 81 | void bdrv_set_dirty_bitmap_locked(BdrvDirtyBitmap *bitmap, |
e0d7f73e | 82 | int64_t offset, int64_t bytes); |
b64bd51e | 83 | void bdrv_reset_dirty_bitmap_locked(BdrvDirtyBitmap *bitmap, |
e0d7f73e | 84 | int64_t offset, int64_t bytes); |
b64bd51e | 85 | int64_t bdrv_dirty_iter_next(BdrvDirtyBitmapIter *iter); |
715a74d8 | 86 | void bdrv_set_dirty_iter(BdrvDirtyBitmapIter *hbi, int64_t offset); |
b64bd51e PB |
87 | int64_t bdrv_get_dirty_count(BdrvDirtyBitmap *bitmap); |
88 | int64_t bdrv_get_meta_dirty_count(BdrvDirtyBitmap *bitmap); | |
1b6cc579 | 89 | void bdrv_dirty_bitmap_truncate(BlockDriverState *bs, int64_t bytes); |
d6883bc9 VSO |
90 | bool bdrv_dirty_bitmap_readonly(const BdrvDirtyBitmap *bitmap); |
91 | bool bdrv_has_readonly_bitmaps(BlockDriverState *bs); | |
a0319aac | 92 | bool bdrv_dirty_bitmap_get_autoload(const BdrvDirtyBitmap *bitmap); |
a88b179f | 93 | bool bdrv_dirty_bitmap_get_persistance(BdrvDirtyBitmap *bitmap); |
4f43e953 | 94 | bool bdrv_dirty_bitmap_qmp_locked(BdrvDirtyBitmap *bitmap); |
993edc0c | 95 | bool bdrv_dirty_bitmap_user_locked(BdrvDirtyBitmap *bitmap); |
a88b179f | 96 | bool bdrv_has_changed_persistent_bitmaps(BlockDriverState *bs); |
3dd10a06 VSO |
97 | BdrvDirtyBitmap *bdrv_dirty_bitmap_next(BlockDriverState *bs, |
98 | BdrvDirtyBitmap *bitmap); | |
a3b52535 | 99 | char *bdrv_dirty_bitmap_sha256(const BdrvDirtyBitmap *bitmap, Error **errp); |
76d570dc VSO |
100 | int64_t bdrv_dirty_bitmap_next_zero(BdrvDirtyBitmap *bitmap, uint64_t offset, |
101 | uint64_t bytes); | |
a78a1a48 VSO |
102 | bool bdrv_dirty_bitmap_next_dirty_area(BdrvDirtyBitmap *bitmap, |
103 | uint64_t *offset, uint64_t *bytes); | |
044ee8e1 VSO |
104 | BdrvDirtyBitmap *bdrv_reclaim_dirty_bitmap_locked(BlockDriverState *bs, |
105 | BdrvDirtyBitmap *bitmap, | |
106 | Error **errp); | |
b64bd51e | 107 | |
ebab2259 | 108 | #endif |