mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 09:13:55 -06:00
block/qcow2: implement blockdev-amend
Currently the implementation only supports amending the encryption options, unlike the qemu-img version Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Message-Id: <20200608094030.670121-14-mlevitsk@redhat.com> Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
30da9dd88a
commit
8ea1613d91
2 changed files with 54 additions and 1 deletions
|
@ -5596,6 +5596,44 @@ static int qcow2_amend_options(BlockDriverState *bs, QemuOpts *opts,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int coroutine_fn qcow2_co_amend(BlockDriverState *bs,
|
||||
BlockdevAmendOptions *opts,
|
||||
bool force,
|
||||
Error **errp)
|
||||
{
|
||||
BlockdevAmendOptionsQcow2 *qopts = &opts->u.qcow2;
|
||||
BDRVQcow2State *s = bs->opaque;
|
||||
int ret = 0;
|
||||
|
||||
if (qopts->has_encrypt) {
|
||||
if (!s->crypto) {
|
||||
error_setg(errp, "image is not encrypted, can't amend");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
if (qopts->encrypt->format != Q_CRYPTO_BLOCK_FORMAT_LUKS) {
|
||||
error_setg(errp,
|
||||
"Amend can't be used to change the qcow2 encryption format");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
if (s->crypt_method_header != QCOW_CRYPT_LUKS) {
|
||||
error_setg(errp,
|
||||
"Only LUKS encryption options can be amended for qcow2 with blockdev-amend");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
ret = qcrypto_block_amend_options(s->crypto,
|
||||
qcow2_crypto_hdr_read_func,
|
||||
qcow2_crypto_hdr_write_func,
|
||||
bs,
|
||||
qopts->encrypt,
|
||||
force,
|
||||
errp);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* If offset or size are negative, respectively, they will not be included in
|
||||
* the BLOCK_IMAGE_CORRUPTED event emitted.
|
||||
|
@ -5813,6 +5851,7 @@ BlockDriver bdrv_qcow2 = {
|
|||
.mutable_opts = mutable_opts,
|
||||
.bdrv_co_check = qcow2_co_check,
|
||||
.bdrv_amend_options = qcow2_amend_options,
|
||||
.bdrv_co_amend = qcow2_co_amend,
|
||||
|
||||
.bdrv_detach_aio_context = qcow2_detach_aio_context,
|
||||
.bdrv_attach_aio_context = qcow2_attach_aio_context,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue