summaryrefslogtreecommitdiffstats
path: root/block_int.h
diff options
context:
space:
mode:
authorPaolo Bonzini2012-05-08 16:51:41 +0200
committerKevin Wolf2012-05-10 10:32:12 +0200
commite023b2e244ddcc25308309d20c6bfd037897b10c (patch)
tree154bfaea2368cfcbb39a2d2610dd9019510a14ff /block_int.h
parentqtest: Add floppy test (diff)
downloadqemu-e023b2e244ddcc25308309d20c6bfd037897b10c.tar.gz
qemu-e023b2e244ddcc25308309d20c6bfd037897b10c.tar.xz
qemu-e023b2e244ddcc25308309d20c6bfd037897b10c.zip
block: fix snapshot on QED
QED's opaque data includes a pointer back to the BlockDriverState. This breaks when bdrv_append shuffles data between bs_new and bs_top. To avoid this, add a "rebind" function that tells the driver about the new relationship between the BlockDriverState and its opaque. The patch also adds rebind to VVFAT for completeness, even though it is not used with live snapshots. Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block_int.h')
-rw-r--r--block_int.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/block_int.h b/block_int.h
index 086832aab9..fbbc7aeb1a 100644
--- a/block_int.h
+++ b/block_int.h
@@ -140,6 +140,7 @@ struct BlockDriver {
int (*bdrv_write)(BlockDriverState *bs, int64_t sector_num,
const uint8_t *buf, int nb_sectors);
void (*bdrv_close)(BlockDriverState *bs);
+ void (*bdrv_rebind)(BlockDriverState *bs);
int (*bdrv_create)(const char *filename, QEMUOptionParameter *options);
int (*bdrv_set_key)(BlockDriverState *bs, const char *key);
int (*bdrv_make_empty)(BlockDriverState *bs);