Am 14.11.2011 13:44, schrieb Stefan Hajnoczi: > The bdrv_is_allocated() interface is not suitable for use while the VM is > running. It is a synchronous interface so it may block the running VM for > arbitrary amounts of time. It also assumes it is the only block driver > operation and there is a risk that internal state could be corrupted if > asynchronous I/O is currently pending. > > This patch series refactors the block layer so that the bdrv_is_allocated() > operation is performed internally in coroutine context. We can then introduce > a new public bdrv_co_is_allocated() function that is suitable for use when the > VM is running. > > Making these changes without breaking git bisect means we need to first > introduce BlockDriver .bdrv_co_is_allocated() and add wrapper code into > bdrv_is_allocated() so existing callers can use converted BlockDrivers. > > After converting all block drivers there are no .bdrv_is_allocated() functions > left and the interface can be removed from BlockDriver. > > Finally, we can add the new public bdrv_co_is_allocated() public interface and > turn the old bdrv_is_allocated() into a wrapper. > > This series is a prerequisite for copy-on-read, which needs to check whether > sectors are allocated while the VM is running. > > v2: > * Rebased on kevin/block and resolved conflicts > > Stefan Hajnoczi (9): > block: use public bdrv_is_allocated() interface > block: add .bdrv_co_is_allocated() > qed: convert to .bdrv_co_is_allocated() > block: convert qcow2, qcow2, and vmdk to .bdrv_co_is_allocated() > vvfat: convert to .bdrv_co_is_allocated() > vdi: convert to .bdrv_co_is_allocated() > cow: convert to .bdrv_co_is_allocated() > block: drop .bdrv_is_allocated() interface > block: add bdrv_co_is_allocated() interface > > block.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++----- > block.h | 2 + > block/cow.c | 8 +++--- > block/qcow.c | 8 ++++-- > block/qcow2.c | 13 +++++++---- > block/qed.c | 15 ++++++++++--- > block/vdi.c | 6 ++-- > block/vmdk.c | 8 ++++-- > block/vvfat.c | 4 +- > block_int.h | 4 +- > 10 files changed, 94 insertions(+), 32 deletions(-)
Thanks, applied all to the block branch (for 1.1) Kevin