From 7cd1e32a860895ccca89eb90a0226efbcd969b55 Mon Sep 17 00:00:00 2001 From: "lirans@il.ibm.com" Date: Mon, 2 Nov 2009 15:40:41 +0200 Subject: Expose a mechanism to trace block writes To support live migration without shared storage we need to be able to trace writes to disk while migrating. This Patch expose dirty block tracking per device to be polled from upper layer. Changes from v4: - Register dirty tracking for each block device. - Minor coding style issues. - Block.c will now manage a dirty bitmap per device once bdrv_set_dirty_tracking() is called. Bitmap is polled by the upper layer (block-migration.c). Signed-off-by: Liran Schour Signed-off-by: Anthony Liguori --- block.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'block.h') diff --git a/block.h b/block.h index 6b0146f7cf..2d4f066906 100644 --- a/block.h +++ b/block.h @@ -80,7 +80,8 @@ void bdrv_register(BlockDriver *bdrv); /* async block I/O */ typedef struct BlockDriverAIOCB BlockDriverAIOCB; typedef void BlockDriverCompletionFunc(void *opaque, int ret); - +typedef void BlockDriverDirtyHandler(BlockDriverState *bs, int64_t sector, + int sector_num); BlockDriverAIOCB *bdrv_aio_readv(BlockDriverState *bs, int64_t sector_num, QEMUIOVector *iov, int nb_sectors, BlockDriverCompletionFunc *cb, void *opaque); @@ -187,4 +188,9 @@ int bdrv_save_vmstate(BlockDriverState *bs, const uint8_t *buf, int bdrv_load_vmstate(BlockDriverState *bs, uint8_t *buf, int64_t pos, int size); +void bdrv_set_dirty_tracking(BlockDriverState *bs, int enable); +int bdrv_get_dirty(BlockDriverState *bs, int64_t sector); +void bdrv_reset_dirty(BlockDriverState *bs, int64_t cur_sector, + int nr_sectors); +int bdrv_get_sectors_per_chunk(void); #endif -- cgit v1.2.3