[PATCH v3 5/5] qemu: add librbd encryption engine

Peter Krempa pkrempa at redhat.com
Thu Oct 7 08:13:40 UTC 2021


On Wed, Oct 06, 2021 at 05:18:46 -0500, Or Ozeri wrote:
> rbd encryption is new in qemu 6.1.0.
> This commit adds a new encryption engine property which
> allows the user to use this new encryption engine.
> 
> Signed-off-by: Or Ozeri <oro at il.ibm.com>
> ---
>  docs/formatstorageencryption.html.in          |  2 +-
>  docs/schemas/storagecommon.rng                |  1 +
>  src/conf/storage_encryption_conf.c            |  2 +-
>  src/conf/storage_encryption_conf.h            |  1 +
>  src/qemu/qemu_block.c                         | 30 +++++++
>  src/qemu/qemu_domain.c                        | 24 ++++++
>  ...sk-network-rbd-encryption.x86_64-6.0.0.err |  1 +
>  ...-network-rbd-encryption.x86_64-latest.args | 49 +++++++++++
>  .../disk-network-rbd-encryption.xml           | 75 +++++++++++++++++
>  tests/qemuxml2argvtest.c                      |  2 +
>  ...k-network-rbd-encryption.x86_64-latest.xml | 83 +++++++++++++++++++
>  tests/qemuxml2xmltest.c                       |  1 +
>  12 files changed, 269 insertions(+), 2 deletions(-)
>  create mode 100644 tests/qemuxml2argvdata/disk-network-rbd-encryption.x86_64-6.0.0.err
>  create mode 100644 tests/qemuxml2argvdata/disk-network-rbd-encryption.x86_64-latest.args
>  create mode 100644 tests/qemuxml2argvdata/disk-network-rbd-encryption.xml
>  create mode 100644 tests/qemuxml2xmloutdata/disk-network-rbd-encryption.x86_64-latest.xml
> 
> diff --git a/docs/formatstorageencryption.html.in b/docs/formatstorageencryption.html.in
> index 5783381a4a..31ec2698a1 100644
> --- a/docs/formatstorageencryption.html.in
> +++ b/docs/formatstorageencryption.html.in
> @@ -27,7 +27,7 @@
>        The <code>encryption</code> tag supports an optional <code>engine</code>
>        tag, which allows selecting which component actually handles
>        the encryption. Currently defined values of <code>engine</code> are
> -      <code>qemu</code>.
> +      <code>qemu</code> and <code>librbd</code>.

Some more explanation might be a good thing to avoid user confusion.

>      </p>
>      <p>
>        The <code>encryption</code> tag can currently contain a sequence of

[...]

> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index 21099d7635..871a708a19 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -4812,6 +4812,30 @@ qemuDomainValidateStorageSource(virStorageSource *src,
>          }
>      }
>  
> +    if (src->encryption &&
> +        src->encryption->engine == VIR_STORAGE_ENCRYPTION_ENGINE_LIBRBD) {

[1]

> +        if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_RBD_ENCRYPTION)) {
> +            virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> +                           _("librbd encryption is not supported by this QEMU binary"));
> +            return -1;
> +        }
> +
> +        switch ((virStorageEncryptionFormatType) src->encryption->format) {

So something like this definitely belongs in one of the previous
commits, but it must also care about the 'qemu' encryption driver and
the corresponding protocols and formats where it supported.

> +            case VIR_STORAGE_ENCRYPTION_FORMAT_LUKS:
> +            case VIR_STORAGE_ENCRYPTION_FORMAT_LUKS2:
> +                break;
> +
> +            case VIR_STORAGE_ENCRYPTION_FORMAT_DEFAULT:
> +            case VIR_STORAGE_ENCRYPTION_FORMAT_QCOW:
> +            case VIR_STORAGE_ENCRYPTION_FORMAT_LAST:
> +            default:
> +                virReportEnumRangeError(virStorageEncryptionFormatType,
> +                                        src->encryption->format);
> +                return -1;
> +        }
> +    }

[...]

The rest looks good. Good test coverage!




More information about the libvir-list mailing list