mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
storage_util: Generate the qcow secret earlier
Rather than having storageBackendCreateQemuImgCheckEncryption perform the virStorageGenerateQcowEncryption, let's just do that earlier during storageBackendCreateQemuImg so that the check helper is just a check helper rather doing something different based on whether the format is qcow[2] or raw based encryption. This fixes an issue in the storageBackendResizeQemuImg processing for qcow encryption where if a secret was not available for a volume, a new secret will not be generated and instead an error message will be generated. Signed-off-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
parent
9629fe258f
commit
3d1db851ca
@ -901,10 +901,10 @@ storageBackendCreateQemuImgCheckEncryption(int format,
|
||||
_("too many secrets for qcow encryption"));
|
||||
return -1;
|
||||
}
|
||||
if (enc->format == VIR_STORAGE_ENCRYPTION_FORMAT_DEFAULT ||
|
||||
enc->nsecrets == 0) {
|
||||
if (virStorageGenerateQcowEncryption(vol) < 0)
|
||||
return -1;
|
||||
if (enc->nsecrets == 0) {
|
||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||
_("no secret provided for qcow encryption"));
|
||||
return -1;
|
||||
}
|
||||
} else if (format == VIR_STORAGE_FILE_RAW) {
|
||||
if (enc->format != VIR_STORAGE_ENCRYPTION_FORMAT_LUKS) {
|
||||
@ -1309,6 +1309,26 @@ storageBackendCreateQemuImgSecretPath(virStoragePoolObjPtr pool,
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
storageBackendGenerateSecretData(virStorageVolDefPtr vol)
|
||||
{
|
||||
virStorageEncryptionPtr enc = vol->target.encryption;
|
||||
|
||||
if (!enc)
|
||||
return 0;
|
||||
|
||||
if ((vol->target.format == VIR_STORAGE_FILE_QCOW ||
|
||||
vol->target.format == VIR_STORAGE_FILE_QCOW2) &&
|
||||
(enc->format == VIR_STORAGE_ENCRYPTION_FORMAT_DEFAULT ||
|
||||
enc->nsecrets == 0)) {
|
||||
if (virStorageGenerateQcowEncryption(vol) < 0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
storageBackendCreateQemuImg(virStoragePoolObjPtr pool,
|
||||
virStorageVolDefPtr vol,
|
||||
@ -1330,6 +1350,9 @@ storageBackendCreateQemuImg(virStoragePoolObjPtr pool,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (storageBackendGenerateSecretData(vol) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (vol->target.format == VIR_STORAGE_FILE_RAW &&
|
||||
vol->target.encryption &&
|
||||
vol->target.encryption->format == VIR_STORAGE_ENCRYPTION_FORMAT_LUKS) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user