block: test block-stream with a base node that is used by block-commit
The base node of a block-stream operation indicates the first image from the backing chain starting from which no data is copied to the top node. The block-stream job allows others to use that base image, so a second block-stream job could be writing to it at the same time. An important restriction is that the base image must not disappear while the stream job is ongoing. stream_start() freezes the backing chain from top to base with that purpose but it does it too late in the code so there is a race condition there. This bug was fixed in the previous commit, and this patch contains an iotest for this scenario. Signed-off-by: Alberto Garcia <berto@igalia.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
20509c4b8b
commit
d20ba603f2
|
@ -314,6 +314,23 @@ class TestParallelOps(iotests.QMPTestCase):
|
|||
|
||||
self.wait_until_completed(drive='commit-drive0')
|
||||
|
||||
# In this case the base node of the stream job is the same as the
|
||||
# top node of commit job. Since block-commit removes the top node
|
||||
# when it finishes, this is not allowed.
|
||||
def test_overlapping_4(self):
|
||||
self.assert_no_active_block_jobs()
|
||||
|
||||
# Commit from node2 into node0
|
||||
result = self.vm.qmp('block-commit', device='drive0', top=self.imgs[2], base=self.imgs[0])
|
||||
self.assert_qmp(result, 'return', {})
|
||||
|
||||
# Stream from node2 into node4
|
||||
result = self.vm.qmp('block-stream', device='node4', base_node='node2', job_id='node4')
|
||||
self.assert_qmp(result, 'error/class', 'GenericError')
|
||||
|
||||
self.wait_until_completed()
|
||||
self.assert_no_active_block_jobs()
|
||||
|
||||
# Test a block-stream and a block-commit job in parallel
|
||||
# Here the stream job is supposed to finish quickly in order to reproduce
|
||||
# the scenario that triggers the bug fixed in 3d5d319e1221 and 1a63a907507
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
........................
|
||||
.........................
|
||||
----------------------------------------------------------------------
|
||||
Ran 24 tests
|
||||
Ran 25 tests
|
||||
|
||||
OK
|
||||
|
|
Loading…
Reference in a new issue