From aa55c23dbca63460e6c2af3fdef1f2c029c544c7 Mon Sep 17 00:00:00 2001 From: Sebastian Brzezinka Date: Thu, 11 Aug 2022 13:37:29 +0200 Subject: [PATCH] sma: crypto support for vhost_blk devices The vhost_blk devices will now support volumes with encryption enabled. Reorder 'imports' according to PEP 8. Change-Id: Ia4ae0832f4cf91578153da7ca0a28a83707ccdca Signed-off-by: Sebastian Brzezinka Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13983 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Konrad Sztyber Reviewed-by: Krzysztof Karas Reviewed-by: Jim Harris --- python/spdk/sma/device/vhost_blk.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/python/spdk/sma/device/vhost_blk.py b/python/spdk/sma/device/vhost_blk.py index 4ae316ac9..064354407 100644 --- a/python/spdk/sma/device/vhost_blk.py +++ b/python/spdk/sma/device/vhost_blk.py @@ -1,13 +1,15 @@ -import os -import grpc import logging -from ..common import format_volume_id +import os from socket import AddressFamily + +import grpc from spdk.rpc.client import JSONRPCException -from .device import DeviceManager, DeviceException + +from ..common import format_volume_id, volume_id_to_nguid +from ..proto import sma_pb2, virtio_blk_pb2 from ..qmp import QMPClient, QMPError -from ..proto import sma_pb2 -from ..proto import virtio_blk_pb2 +from ..volume import CryptoException, get_crypto_engine +from .device import DeviceException, DeviceManager class VhostBlkDeviceManager(DeviceManager): @@ -72,10 +74,11 @@ class VhostBlkDeviceManager(DeviceManager): logging.error('Failed to delete controller') return False - def _find_bdev(self, client, name): + def _find_bdev(self, client, guid): try: - return client.call('bdev_get_bdevs', {'name': name})[0] - except JSONRPCException: + bdev_name = get_crypto_engine().get_crypto_bdev(guid) or guid + return client.call('bdev_get_bdevs', {'name': bdev_name})[0] + except (JSONRPCException, CryptoException): return None def _bdev_cmp(self, client, bdev1, bdev2): @@ -89,8 +92,9 @@ class VhostBlkDeviceManager(DeviceManager): if nctrlr is not None: return self._bdev_cmp(client, nctrlr['backend_specific']['block']['bdev'], volume_guid) try: + bdev_name = get_crypto_engine().get_crypto_bdev(volume_guid) or volume_guid return client.call('vhost_create_blk_controller', - {'ctrlr': ctrlr, 'dev_name': volume_guid}) + {'ctrlr': ctrlr, 'dev_name': bdev_name}) except JSONRPCException: logging.error('Failed to create subsystem') return False