block: bdrv_reopen_parse_backing(): don't check frozen child
bdrv_set_backing_noperm() takes care of it (actual check is in bdrv_set_file_or_backing_noperm()), so we don't need to check it here. While being here, improve error message a bit. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Message-Id: <20210610120537.196183-5-vsementsov@virtuozzo.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
fd26b8a089
commit
bfae052a57
14
block.c
14
block.c
@ -4308,19 +4308,7 @@ static int bdrv_reopen_parse_backing(BDRVReopenState *reopen_state,
|
||||
"an implicit backing file", bs->node_name);
|
||||
return -EPERM;
|
||||
}
|
||||
/*
|
||||
* Check if the backing link that we want to replace is frozen.
|
||||
* Note that
|
||||
* bdrv_filter_or_cow_child(overlay_bs) == overlay_bs->backing,
|
||||
* because we know that overlay_bs == bs, and that @bs
|
||||
* either is a filter that uses ->backing or a COW format BDS
|
||||
* with bs->drv->supports_backing == true.
|
||||
*/
|
||||
if (bdrv_is_backing_chain_frozen(overlay_bs,
|
||||
child_bs(overlay_bs->backing), errp))
|
||||
{
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
reopen_state->replace_backing_bs = true;
|
||||
reopen_state->old_backing_bs = bs->backing ? bs->backing->bs : NULL;
|
||||
ret = bdrv_set_backing_noperm(bs, new_backing_bs, set_backings_tran,
|
||||
|
@ -878,7 +878,7 @@ class TestBlockdevReopen(iotests.QMPTestCase):
|
||||
|
||||
# We can't remove hd1 while the stream job is ongoing
|
||||
opts['backing'] = None
|
||||
self.reopen(opts, {}, "Cannot change 'backing' link from 'hd0' to 'hd1'")
|
||||
self.reopen(opts, {}, "Cannot change frozen 'backing' link from 'hd0' to 'hd1'")
|
||||
|
||||
self.vm.run_job('stream0', auto_finalize = False, auto_dismiss = True)
|
||||
|
||||
@ -910,7 +910,7 @@ class TestBlockdevReopen(iotests.QMPTestCase):
|
||||
# We can't remove hd2 while the stream job is ongoing
|
||||
opts['backing']['backing'] = None
|
||||
self.reopen(opts['backing'], {'read-only': False},
|
||||
"Cannot change 'backing' link from 'hd1' to 'hd2'")
|
||||
"Cannot change frozen 'backing' link from 'hd1' to 'hd2'")
|
||||
|
||||
# We can detach hd1 from hd0 because it doesn't affect the stream job
|
||||
opts['backing'] = None
|
||||
@ -933,11 +933,11 @@ class TestBlockdevReopen(iotests.QMPTestCase):
|
||||
|
||||
# We can't remove hd2 while the commit job is ongoing
|
||||
opts['backing']['backing'] = None
|
||||
self.reopen(opts, {}, "Cannot change 'backing' link from 'hd1' to 'hd2'")
|
||||
self.reopen(opts, {}, "Cannot change frozen 'backing' link from 'hd1' to 'hd2'")
|
||||
|
||||
# We can't remove hd1 while the commit job is ongoing
|
||||
opts['backing'] = None
|
||||
self.reopen(opts, {}, "Cannot change 'backing' link from 'hd0' to 'hd1'")
|
||||
self.reopen(opts, {}, "Cannot change frozen 'backing' link from 'hd0' to 'hd1'")
|
||||
|
||||
event = self.vm.event_wait(name='BLOCK_JOB_READY')
|
||||
self.assert_qmp(event, 'data/device', 'commit0')
|
||||
|
Loading…
Reference in New Issue
Block a user