mirror of https://github.com/xemu-project/xemu.git
qapi: Make parameter 'file' optional for BlockdevCreateOptionsLUKS
To support detached LUKS header creation, make the existing 'file' field in BlockdevCreateOptionsLUKS optional. Signed-off-by: Hyman Huang <yong.huang@smartx.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
9ad5c4e7ee
commit
433957bb7f
|
@ -663,9 +663,9 @@ block_crypto_co_create_luks(BlockdevCreateOptions *create_options, Error **errp)
|
||||||
assert(create_options->driver == BLOCKDEV_DRIVER_LUKS);
|
assert(create_options->driver == BLOCKDEV_DRIVER_LUKS);
|
||||||
luks_opts = &create_options->u.luks;
|
luks_opts = &create_options->u.luks;
|
||||||
|
|
||||||
bs = bdrv_co_open_blockdev_ref(luks_opts->file, errp);
|
if (luks_opts->file == NULL) {
|
||||||
if (bs == NULL) {
|
error_setg(errp, "Formatting LUKS disk requires parameter 'file'");
|
||||||
return -EIO;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
create_opts = (QCryptoBlockCreateOptions) {
|
create_opts = (QCryptoBlockCreateOptions) {
|
||||||
|
@ -677,10 +677,17 @@ block_crypto_co_create_luks(BlockdevCreateOptions *create_options, Error **errp)
|
||||||
preallocation = luks_opts->preallocation;
|
preallocation = luks_opts->preallocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = block_crypto_co_create_generic(bs, luks_opts->size, &create_opts,
|
if (luks_opts->file) {
|
||||||
preallocation, errp);
|
bs = bdrv_co_open_blockdev_ref(luks_opts->file, errp);
|
||||||
if (ret < 0) {
|
if (bs == NULL) {
|
||||||
goto fail;
|
return -EIO;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = block_crypto_co_create_generic(bs, luks_opts->size, &create_opts,
|
||||||
|
preallocation, errp);
|
||||||
|
if (ret < 0) {
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
|
@ -4955,7 +4955,8 @@
|
||||||
#
|
#
|
||||||
# Driver specific image creation options for LUKS.
|
# Driver specific image creation options for LUKS.
|
||||||
#
|
#
|
||||||
# @file: Node to create the image format on
|
# @file: Node to create the image format on, mandatory except when
|
||||||
|
# 'preallocation' is not requested
|
||||||
#
|
#
|
||||||
# @size: Size of the virtual disk in bytes
|
# @size: Size of the virtual disk in bytes
|
||||||
#
|
#
|
||||||
|
@ -4966,7 +4967,7 @@
|
||||||
##
|
##
|
||||||
{ 'struct': 'BlockdevCreateOptionsLUKS',
|
{ 'struct': 'BlockdevCreateOptionsLUKS',
|
||||||
'base': 'QCryptoBlockCreateOptionsLUKS',
|
'base': 'QCryptoBlockCreateOptionsLUKS',
|
||||||
'data': { 'file': 'BlockdevRef',
|
'data': { '*file': 'BlockdevRef',
|
||||||
'size': 'size',
|
'size': 'size',
|
||||||
'*preallocation': 'PreallocMode' } }
|
'*preallocation': 'PreallocMode' } }
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue