Add a new size_changed flag in the BlockDriverState and call the change_cb callback to notify drivers about a size change.
Signed-off-by: Christoph Hellwig <h...@lst.de> Index: qemu/block.c =================================================================== --- qemu.orig/block.c 2011-01-14 17:05:49.527003363 +0100 +++ qemu/block.c 2011-01-14 17:07:23.206255143 +0100 @@ -1135,6 +1135,10 @@ int bdrv_truncate(BlockDriverState *bs, ret = drv->bdrv_truncate(bs, offset); if (ret == 0) { ret = refresh_total_sectors(bs, offset >> BDRV_SECTOR_BITS); + if (bs->change_cb) { + bs->size_changed = 1; + bs->change_cb(bs->change_opaque); + } } return ret; } Index: qemu/block_int.h =================================================================== --- qemu.orig/block_int.h 2011-01-14 17:05:49.537004411 +0100 +++ qemu/block_int.h 2011-01-14 17:06:02.539004271 +0100 @@ -167,6 +167,7 @@ struct BlockDriverState { char backing_format[16]; /* if non-zero and backing_file exists */ int is_temporary; int media_changed; + int size_changed; BlockDriverState *backing_hd; BlockDriverState *file;