|
@@ -470,18 +470,15 @@ def cancel_and_wait(self, drive='drive0', force=False, resume=False):
|
|
|
|
|
|
def wait_until_completed(self, drive='drive0', check_offset=True):
|
|
def wait_until_completed(self, drive='drive0', check_offset=True):
|
|
'''Wait for a block job to finish, returning the event'''
|
|
'''Wait for a block job to finish, returning the event'''
|
|
- completed = False
|
|
|
|
- while not completed:
|
|
|
|
|
|
+ while True:
|
|
for event in self.vm.get_qmp_events(wait=True):
|
|
for event in self.vm.get_qmp_events(wait=True):
|
|
if event['event'] == 'BLOCK_JOB_COMPLETED':
|
|
if event['event'] == 'BLOCK_JOB_COMPLETED':
|
|
self.assert_qmp(event, 'data/device', drive)
|
|
self.assert_qmp(event, 'data/device', drive)
|
|
self.assert_qmp_absent(event, 'data/error')
|
|
self.assert_qmp_absent(event, 'data/error')
|
|
if check_offset:
|
|
if check_offset:
|
|
self.assert_qmp(event, 'data/offset', event['data']['len'])
|
|
self.assert_qmp(event, 'data/offset', event['data']['len'])
|
|
- completed = True
|
|
|
|
-
|
|
|
|
- self.assert_no_active_block_jobs()
|
|
|
|
- return event
|
|
|
|
|
|
+ self.assert_no_active_block_jobs()
|
|
|
|
+ return event
|
|
|
|
|
|
def wait_ready(self, drive='drive0'):
|
|
def wait_ready(self, drive='drive0'):
|
|
'''Wait until a block job BLOCK_JOB_READY event'''
|
|
'''Wait until a block job BLOCK_JOB_READY event'''
|