Commit c6ca28d636cdc24574aa1822f5f424de5dc89758
1 parent
d8f44609
Add bdrv_flush_all()
This patch adds a bdrv_flush_all() function. It's necessary to ensure that all IO operations have been flushed to disk before completely a live migration. N.B. we don't actually use this now. We really should flush the block drivers using an live savevm callback to avoid unnecessary guest down time. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5432 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
12 additions
and
0 deletions
block.c
| @@ -895,6 +895,16 @@ void bdrv_flush(BlockDriverState *bs) | @@ -895,6 +895,16 @@ void bdrv_flush(BlockDriverState *bs) | ||
| 895 | bdrv_flush(bs->backing_hd); | 895 | bdrv_flush(bs->backing_hd); |
| 896 | } | 896 | } |
| 897 | 897 | ||
| 898 | +void bdrv_flush_all(void) | ||
| 899 | +{ | ||
| 900 | + BlockDriverState *bs; | ||
| 901 | + | ||
| 902 | + for (bs = bdrv_first; bs != NULL; bs = bs->next) | ||
| 903 | + if (bs->drv && !bdrv_is_read_only(bs) && | ||
| 904 | + (!bdrv_is_removable(bs) || bdrv_is_inserted(bs))) | ||
| 905 | + bdrv_flush(bs); | ||
| 906 | +} | ||
| 907 | + | ||
| 898 | /* | 908 | /* |
| 899 | * Returns true iff the specified sector is present in the disk image. Drivers | 909 | * Returns true iff the specified sector is present in the disk image. Drivers |
| 900 | * not implementing the functionality are assumed to not support backing files, | 910 | * not implementing the functionality are assumed to not support backing files, |
block.h
| @@ -93,6 +93,8 @@ int qemu_key_check(BlockDriverState *bs, const char *name); | @@ -93,6 +93,8 @@ int qemu_key_check(BlockDriverState *bs, const char *name); | ||
| 93 | 93 | ||
| 94 | /* Ensure contents are flushed to disk. */ | 94 | /* Ensure contents are flushed to disk. */ |
| 95 | void bdrv_flush(BlockDriverState *bs); | 95 | void bdrv_flush(BlockDriverState *bs); |
| 96 | +void bdrv_flush_all(void); | ||
| 97 | + | ||
| 96 | int bdrv_is_allocated(BlockDriverState *bs, int64_t sector_num, int nb_sectors, | 98 | int bdrv_is_allocated(BlockDriverState *bs, int64_t sector_num, int nb_sectors, |
| 97 | int *pnum); | 99 | int *pnum); |
| 98 | 100 |