Lines Matching full:bitmap
2 * QEMU block dirty bitmap QMP commands
37 #include "block/dirty-bitmap.h"
43 * Return a dirty bitmap (if present), after validating
44 * the node reference and bitmap names.
47 * @name: The name of the bitmap to search for
51 * @return: A bitmap object on success, or NULL on failure.
59 BdrvDirtyBitmap *bitmap; in block_dirty_bitmap_lookup() local
68 error_setg(errp, "Bitmap name cannot be NULL"); in block_dirty_bitmap_lookup()
77 bitmap = bdrv_find_dirty_bitmap(bs, name); in block_dirty_bitmap_lookup()
78 if (!bitmap) { in block_dirty_bitmap_lookup()
79 error_setg(errp, "Dirty bitmap '%s' not found", name); in block_dirty_bitmap_lookup()
87 return bitmap; in block_dirty_bitmap_lookup()
97 BdrvDirtyBitmap *bitmap; in qmp_block_dirty_bitmap_add() local
100 error_setg(errp, "Bitmap name cannot be empty"); in qmp_block_dirty_bitmap_add()
134 bitmap = bdrv_create_dirty_bitmap(bs, granularity, name, errp); in qmp_block_dirty_bitmap_add()
135 if (bitmap == NULL) { in qmp_block_dirty_bitmap_add()
140 bdrv_disable_dirty_bitmap(bitmap); in qmp_block_dirty_bitmap_add()
143 bdrv_dirty_bitmap_set_persistence(bitmap, persistent); in qmp_block_dirty_bitmap_add()
152 BdrvDirtyBitmap *bitmap; in block_dirty_bitmap_remove() local
156 bitmap = block_dirty_bitmap_lookup(node, name, &bs, errp); in block_dirty_bitmap_remove()
157 if (!bitmap || !bs) { in block_dirty_bitmap_remove()
161 if (bdrv_dirty_bitmap_check(bitmap, BDRV_BITMAP_BUSY | BDRV_BITMAP_RO, in block_dirty_bitmap_remove()
166 if (bdrv_dirty_bitmap_get_persistence(bitmap) && in block_dirty_bitmap_remove()
173 bdrv_release_dirty_bitmap(bitmap); in block_dirty_bitmap_remove()
180 return release ? NULL : bitmap; in block_dirty_bitmap_remove()
190 * Completely clear a bitmap, for the purposes of synchronizing a bitmap
196 BdrvDirtyBitmap *bitmap; in qmp_block_dirty_bitmap_clear() local
199 bitmap = block_dirty_bitmap_lookup(node, name, &bs, errp); in qmp_block_dirty_bitmap_clear()
200 if (!bitmap || !bs) { in qmp_block_dirty_bitmap_clear()
204 if (bdrv_dirty_bitmap_check(bitmap, BDRV_BITMAP_DEFAULT, errp)) { in qmp_block_dirty_bitmap_clear()
208 bdrv_clear_dirty_bitmap(bitmap, NULL); in qmp_block_dirty_bitmap_clear()
215 BdrvDirtyBitmap *bitmap; in qmp_block_dirty_bitmap_enable() local
217 bitmap = block_dirty_bitmap_lookup(node, name, &bs, errp); in qmp_block_dirty_bitmap_enable()
218 if (!bitmap) { in qmp_block_dirty_bitmap_enable()
222 if (bdrv_dirty_bitmap_check(bitmap, BDRV_BITMAP_ALLOW_RO, errp)) { in qmp_block_dirty_bitmap_enable()
226 bdrv_enable_dirty_bitmap(bitmap); in qmp_block_dirty_bitmap_enable()
233 BdrvDirtyBitmap *bitmap; in qmp_block_dirty_bitmap_disable() local
235 bitmap = block_dirty_bitmap_lookup(node, name, &bs, errp); in qmp_block_dirty_bitmap_disable()
236 if (!bitmap) { in qmp_block_dirty_bitmap_disable()
240 if (bdrv_dirty_bitmap_check(bitmap, BDRV_BITMAP_ALLOW_RO, errp)) { in qmp_block_dirty_bitmap_disable()
244 bdrv_disable_dirty_bitmap(bitmap); in qmp_block_dirty_bitmap_disable()
271 error_setg(errp, "Dirty bitmap '%s' not found", src_bitmap); in block_dirty_bitmap_merge()