diff --git a/patches/openstack/cinder/sep-clone-across-pools.patch b/patches/openstack/cinder/sep-clone-across-pools.patch
index fade092..0992ec0 100644
--- a/patches/openstack/cinder/sep-clone-across-pools.patch
+++ b/patches/openstack/cinder/sep-clone-across-pools.patch
@@ -1,7 +1,7 @@
-From 8ce9bb75fb32c921043b14b43884c8b1660cd9b8 Mon Sep 17 00:00:00 2001
+From 3b0addd827de5613b4c17c802b9f936fb60491ff Mon Sep 17 00:00:00 2001
 From: Peter Penchev <openstack-dev@storpool.com>
 Date: Wed, 22 Jun 2022 10:04:31 +0300
-Subject: [PATCH 08/10] Add the clone_across_pools driver capability
+Subject: [PATCH 7/9] Add the clone_across_pools driver capability
 
 Let drivers declare that they can clone a volume into a different pool and
 relax the checks when creating a volume from an image (both with and
@@ -96,7 +96,7 @@
              expect = {'cluster_name': self.volume.cluster_name}
          found_entry = cache.get_entry(self.context,
 diff --git a/cinder/tests/unit/volume/flows/test_create_volume_flow.py b/cinder/tests/unit/volume/flows/test_create_volume_flow.py
-index 1bb3f2b98..a804d7fe6 100644
+index fa629599a..a90e943fe 100644
 --- a/cinder/tests/unit/volume/flows/test_create_volume_flow.py
 +++ b/cinder/tests/unit/volume/flows/test_create_volume_flow.py
 @@ -1060,6 +1060,7 @@ class CreateVolumeFlowManagerTestCase(test.TestCase):
@@ -131,7 +131,7 @@
          fake_volume_manager = mock.MagicMock()
          fake_cache = mock.MagicMock()
          fake_manager = create_volume_manager.CreateVolumeFromSpecTask(
-@@ -1194,6 +1198,7 @@ class CreateVolumeFlowManagerTestCase(test.TestCase):
+@@ -1195,6 +1199,7 @@ class CreateVolumeFlowManagerTestCase(test.TestCase):
                                                      mock_cleanup_cg):
          fake_db = mock.MagicMock()
          fake_driver = mock.MagicMock()
@@ -139,7 +139,7 @@
          fake_volume_manager = mock.MagicMock()
          fake_manager = create_volume_manager.CreateVolumeFromSpecTask(
              fake_volume_manager, fake_db, fake_driver)
-@@ -1252,6 +1257,7 @@ class CreateVolumeFlowManagerTestCase(test.TestCase):
+@@ -1254,6 +1259,7 @@ class CreateVolumeFlowManagerTestCase(test.TestCase):
                                  driver_error):
          fake_db = mock.MagicMock()
          fake_driver = mock.MagicMock()
@@ -147,7 +147,7 @@
          fake_volume_manager = mock.MagicMock()
          backup_host = 'host@backend#pool'
          test_manager = create_volume_manager.CreateVolumeFromSpecTask(
-@@ -1291,6 +1297,7 @@ class CreateVolumeFlowManagerTestCase(test.TestCase):
+@@ -1293,6 +1299,7 @@ class CreateVolumeFlowManagerTestCase(test.TestCase):
      def test_create_drive_error(self, mock_message_create):
          fake_db = mock.MagicMock()
          fake_driver = mock.MagicMock()
@@ -155,7 +155,7 @@
          fake_volume_manager = mock.MagicMock()
          fake_manager = create_volume_manager.CreateVolumeFromSpecTask(
              fake_volume_manager, fake_db, fake_driver)
-@@ -1492,6 +1499,7 @@ class CreateVolumeFlowManagerGlanceCinderBackendCase(test.TestCase):
+@@ -1494,6 +1501,7 @@ class CreateVolumeFlowManagerGlanceCinderBackendCase(test.TestCase):
              spec=utils.get_file_spec())
          fake_db = mock.MagicMock()
          fake_driver = mock.MagicMock()
@@ -163,7 +163,7 @@
          fake_manager = create_volume_manager.CreateVolumeFromSpecTask(
              mock.MagicMock(), fake_db, fake_driver)
          fake_image_service = fake_image.FakeImageService()
-@@ -1518,6 +1526,7 @@ class CreateVolumeFlowManagerGlanceCinderBackendCase(test.TestCase):
+@@ -1520,6 +1528,7 @@ class CreateVolumeFlowManagerGlanceCinderBackendCase(test.TestCase):
                        'cinder_encryption_key_id': None}
  
          fake_driver.clone_image.return_value = (None, False)
@@ -171,7 +171,7 @@
          fake_db.volume_get_all_by_host.return_value = [image_volume]
  
          fake_manager._create_from_image(self.ctxt,
-@@ -1536,6 +1545,69 @@ class CreateVolumeFlowManagerGlanceCinderBackendCase(test.TestCase):
+@@ -1538,6 +1547,69 @@ class CreateVolumeFlowManagerGlanceCinderBackendCase(test.TestCase):
              self.assertFalse(fake_driver.create_cloned_volume.called)
          mock_cleanup_cg.assert_called_once_with(volume)
  
@@ -241,7 +241,7 @@
      LEGACY_URI = 'cinder://%s' % fakes.VOLUME_ID
      MULTISTORE_URI = 'cinder://fake-store/%s' % fakes.VOLUME_ID
  
-@@ -1562,6 +1634,7 @@ class CreateVolumeFlowManagerGlanceCinderBackendCase(test.TestCase):
+@@ -1564,6 +1636,7 @@ class CreateVolumeFlowManagerGlanceCinderBackendCase(test.TestCase):
              spec=utils.get_file_spec())
          fake_db = mock.MagicMock()
          fake_driver = mock.MagicMock()
@@ -250,7 +250,7 @@
              mock.MagicMock(), fake_db, fake_driver)
          fake_image_service = fake_image.FakeImageService()
 diff --git a/cinder/volume/flows/manager/create_volume.py b/cinder/volume/flows/manager/create_volume.py
-index ac09ed898..7347ac1f8 100644
+index 1f78b3375..5ddeb1a56 100644
 --- a/cinder/volume/flows/manager/create_volume.py
 +++ b/cinder/volume/flows/manager/create_volume.py
 @@ -741,8 +741,12 @@ class CreateVolumeFromSpecTask(flow_utils.CinderTask):
@@ -269,7 +269,7 @@
          for image_volume in image_volumes:
              # For the case image volume is stored in the service tenant,
 diff --git a/cinder/volume/manager.py b/cinder/volume/manager.py
-index 104291563..88c037279 100644
+index 34e6e4cff..7850ed19b 100644
 --- a/cinder/volume/manager.py
 +++ b/cinder/volume/manager.py
 @@ -356,7 +356,8 @@ class VolumeManager(manager.CleanableManager,
@@ -283,7 +283,7 @@
              LOG.info('Image-volume cache enabled for host %(host)s.',
                       {'host': self.host})
 diff --git a/doc/source/reference/support-matrix.ini b/doc/source/reference/support-matrix.ini
-index 6c3af739e..3bb2be72b 100644
+index 4cf4cf655..243993fe8 100644
 --- a/doc/source/reference/support-matrix.ini
 +++ b/doc/source/reference/support-matrix.ini
 @@ -1048,3 +1048,81 @@ driver.win_iscsi=missing
@@ -369,5 +369,5 @@
 +driver.yadro=missing
 +driver.zadara=missing
 -- 
-2.42.0
+2.43.0
 
diff --git a/patches/openstack/cinder/sep-sp-clone-across-pools.patch b/patches/openstack/cinder/sep-sp-clone-across-pools.patch
index 4862989..83b0d5b 100644
--- a/patches/openstack/cinder/sep-sp-clone-across-pools.patch
+++ b/patches/openstack/cinder/sep-sp-clone-across-pools.patch
@@ -1,7 +1,7 @@
-From 381f77449f30d9a860eeef532963e21f895c00e9 Mon Sep 17 00:00:00 2001
+From 74917a3b748324de3f8556dde0b983ecfa77520f Mon Sep 17 00:00:00 2001
 From: Peter Penchev <openstack-dev@storpool.com>
 Date: Wed, 22 Jun 2022 10:48:25 +0300
-Subject: [PATCH 09/10] StorPool: declare the clone_across_pools capability
+Subject: [PATCH 8/9] StorPool: declare the clone_across_pools capability
 
 Change-Id: I5338c6c4f53a448e495f695cd64b36b722cd947d
 ---
@@ -12,10 +12,10 @@
  create mode 100644 releasenotes/notes/storpool-clone-across-pools-b3f7923dee35503a.yaml
 
 diff --git a/cinder/volume/drivers/storpool.py b/cinder/volume/drivers/storpool.py
-index 5b4ea0d31..b15a201c3 100644
+index 131ba68fb..caa0ce06e 100644
 --- a/cinder/volume/drivers/storpool.py
 +++ b/cinder/volume/drivers/storpool.py
-@@ -362,6 +362,7 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -361,6 +361,7 @@ class StorPoolDriver(driver.VolumeDriver):
              'driver_version': self.VERSION,
              'storage_protocol': constants.STORPOOL,
              # Driver capabilities
@@ -24,7 +24,7 @@
              # The actual pools data
              'pools': pools
 diff --git a/doc/source/reference/support-matrix.ini b/doc/source/reference/support-matrix.ini
-index 3bb2be72b..7964d9807 100644
+index 243993fe8..89c894a41 100644
 --- a/doc/source/reference/support-matrix.ini
 +++ b/doc/source/reference/support-matrix.ini
 @@ -1115,7 +1115,7 @@ driver.rbd=missing
@@ -49,5 +49,5 @@
 +    which allows it to create a volume into an arbitrary StorPool-backed
 +    volume type from a StorPool-backed Glance image.
 -- 
-2.42.0
+2.43.0
 
diff --git a/patches/openstack/cinder/sep-sp-clone-volume.patch b/patches/openstack/cinder/sep-sp-clone-volume.patch
index 6e7f90f..8dbbe2e 100644
--- a/patches/openstack/cinder/sep-sp-clone-volume.patch
+++ b/patches/openstack/cinder/sep-sp-clone-volume.patch
@@ -1,7 +1,7 @@
-From 842b39e2e8e73ea2dda84955d3ab99d9efbfa527 Mon Sep 17 00:00:00 2001
+From 609436981cbd13488eb1345d41ebffcd2347d2de Mon Sep 17 00:00:00 2001
 From: Peter Penchev <openstack-dev@storpool.com>
 Date: Wed, 20 Apr 2022 15:47:39 +0300
-Subject: [PATCH 07/10] StorPool: create_cloned_volume() improvements
+Subject: [PATCH 6/9] StorPool: create_cloned_volume() improvements
 
 If the source and destination volumes are in the same StorPool template
 (as defined by either the volume type or the global config setting),
@@ -30,7 +30,7 @@
  create mode 100644 releasenotes/notes/storpool-clone-better-dca90f40c9273de9.yaml
 
 diff --git a/cinder/tests/unit/volume/drivers/test_storpool.py b/cinder/tests/unit/volume/drivers/test_storpool.py
-index 24715fa29..95a1ffffd 100644
+index 8792678ed..94074d218 100644
 --- a/cinder/tests/unit/volume/drivers/test_storpool.py
 +++ b/cinder/tests/unit/volume/drivers/test_storpool.py
 @@ -14,6 +14,7 @@
@@ -41,7 +41,7 @@
  import re
  import sys
  from unittest import mock
-@@ -110,13 +111,33 @@ class MockAPI(object):
+@@ -109,13 +110,33 @@ class MockAPI(object):
      def snapshotCreate(self, vname, snap):
          snapshots[snap['name']] = dict(volumes[vname])
  
@@ -77,7 +77,7 @@
  
      def volumeDelete(self, name):
          del volumes[name]
-@@ -174,6 +195,23 @@ fakeStorPool.spopenstack.AttachDB = MockAttachDB
+@@ -173,6 +194,23 @@ fakeStorPool.spopenstack.AttachDB = MockAttachDB
  fakeStorPool.sptypes.VolumeUpdateDesc = MockVolumeUpdateDesc
  
  
@@ -101,7 +101,7 @@
  @ddt.ddt
  class StorPoolTestCase(test.TestCase):
  
-@@ -265,6 +303,11 @@ class StorPoolTestCase(test.TestCase):
+@@ -264,6 +302,11 @@ class StorPoolTestCase(test.TestCase):
          self.assertListEqual(sorted([volumeName(n) for n in names]),
                               sorted(data['name'] for data in volumes.values()))
  
@@ -113,7 +113,7 @@
      @mock_volume_types
      def test_create_delete_volume(self):
          self.assertVolumeNames([])
-@@ -277,7 +320,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -276,7 +319,7 @@ class StorPoolTestCase(test.TestCase):
          self.assertVolumeNames(('1',))
          v = volumes[volumeName('1')]
          self.assertEqual(1 * units.Gi, v['size'])
@@ -122,7 +122,7 @@
          self.assertEqual(3, v['replication'])
  
          caught = False
-@@ -297,7 +340,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -296,7 +339,7 @@ class StorPoolTestCase(test.TestCase):
          self.assertVolumeNames(('1',))
          v = volumes[volumeName('1')]
          self.assertEqual(2 * units.Gi, v['size'])
@@ -131,7 +131,7 @@
          self.assertEqual(3, v['replication'])
  
          self.driver.create_volume({'id': '2', 'name': 'v2', 'size': 3,
-@@ -305,7 +348,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -304,7 +347,7 @@ class StorPoolTestCase(test.TestCase):
          self.assertVolumeNames(('1', '2'))
          v = volumes[volumeName('2')]
          self.assertEqual(3 * units.Gi, v['size'])
@@ -140,7 +140,7 @@
          self.assertEqual(3, v['replication'])
  
          self.driver.create_volume({'id': '3', 'name': 'v2', 'size': 4,
-@@ -327,7 +370,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -326,7 +369,7 @@ class StorPoolTestCase(test.TestCase):
          # Make sure the dictionary is not corrupted somehow...
          v = volumes[volumeName('1')]
          self.assertEqual(2 * units.Gi, v['size'])
@@ -149,7 +149,7 @@
          self.assertEqual(3, v['replication'])
  
          for vid in ('1', '2', '3', '4'):
-@@ -395,16 +438,17 @@ class StorPoolTestCase(test.TestCase):
+@@ -392,16 +435,17 @@ class StorPoolTestCase(test.TestCase):
          self.driver.extend_volume({'id': '1'}, 2)
          self.assertEqual(2 * units.Gi, volumes[volumeName('1')]['size'])
  
@@ -175,7 +175,7 @@
  
          self.driver.delete_volume({'id': 1})
          self.driver.delete_volume({'id': 2})
-@@ -412,6 +456,78 @@ class StorPoolTestCase(test.TestCase):
+@@ -409,6 +453,78 @@ class StorPoolTestCase(test.TestCase):
          self.assertDictEqual({}, volumes)
          self.assertDictEqual({}, snapshots)
  
@@ -254,7 +254,7 @@
      @mock_volume_types
      def test_config_replication(self):
          self.assertVolumeNames([])
-@@ -431,7 +547,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -428,7 +544,7 @@ class StorPoolTestCase(test.TestCase):
          self.assertVolumeNames(('cfgrepl1',))
          v = volumes[volumeName('cfgrepl1')]
          self.assertEqual(3, v['replication'])
@@ -263,7 +263,7 @@
          self.driver.delete_volume({'id': 'cfgrepl1'})
  
          self.driver.configuration.storpool_replication = 2
-@@ -445,7 +561,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -442,7 +558,7 @@ class StorPoolTestCase(test.TestCase):
          self.assertVolumeNames(('cfgrepl2',))
          v = volumes[volumeName('cfgrepl2')]
          self.assertEqual(2, v['replication'])
@@ -272,7 +272,7 @@
          self.driver.delete_volume({'id': 'cfgrepl2'})
  
          self.driver.create_volume({'id': 'cfgrepl3', 'name': 'v1', 'size': 1,
-@@ -477,7 +593,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -474,7 +590,7 @@ class StorPoolTestCase(test.TestCase):
          self.assertVolumeNames(('cfgtempl1',))
          v = volumes[volumeName('cfgtempl1')]
          self.assertEqual(3, v['replication'])
@@ -282,24 +282,23 @@
  
          self.driver.create_volume({'id': 'cfgtempl2', 'name': 'v1', 'size': 1,
 diff --git a/cinder/volume/drivers/storpool.py b/cinder/volume/drivers/storpool.py
-index 97d188fd4..5b4ea0d31 100644
+index c2b566f4a..131ba68fb 100644
 --- a/cinder/volume/drivers/storpool.py
 +++ b/cinder/volume/drivers/storpool.py
-@@ -19,11 +19,13 @@ import platform
+@@ -19,10 +19,12 @@ import platform
  
  from oslo_config import cfg
  from oslo_log import log as logging
 +from oslo_utils import excutils
  from oslo_utils import importutils
  from oslo_utils import units
- import six
  
  from cinder.common import constants
 +from cinder import context
  from cinder import exception
  from cinder.i18n import _
  from cinder import interface
-@@ -197,30 +199,80 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -196,30 +198,80 @@ class StorPoolDriver(driver.VolumeDriver):
  
      def create_cloned_volume(self, volume, src_vref):
          refname = self._attach.volumeName(src_vref['id'])
@@ -397,10 +396,10 @@
      def create_export(self, context, volume, connector):
          pass
 diff --git a/driver-requirements.txt b/driver-requirements.txt
-index 2f05bc94e..2b28d37fd 100644
+index 8cff370ed..aa1211c19 100644
 --- a/driver-requirements.txt
 +++ b/driver-requirements.txt
-@@ -41,7 +41,7 @@ infi.dtypes.wwn # PSF
+@@ -42,7 +42,7 @@ infi.dtypes.wwn # PSF
  infi.dtypes.iqn # PSF
  
  # Storpool
@@ -422,5 +421,5 @@
 +    StorPool templates (exposed as Cinder storage pools) if requested,
 +    eliminating some data duplication in the underlying StorPool cluster.
 -- 
-2.42.0
+2.43.0
 
diff --git a/patches/openstack/cinder/sep-sp-fix-test-rename.patch b/patches/openstack/cinder/sep-sp-fix-test-rename.patch
index 720b62b..1e7b5a4 100644
--- a/patches/openstack/cinder/sep-sp-fix-test-rename.patch
+++ b/patches/openstack/cinder/sep-sp-fix-test-rename.patch
@@ -1,7 +1,7 @@
-From 2835c8aeb39313e927a4c13a7ce78d5386c4d909 Mon Sep 17 00:00:00 2001
+From f4bed5a7db90fa1a7dd5bf098f2f6652fe8b9c53 Mon Sep 17 00:00:00 2001
 From: Peter Penchev <openstack-dev@storpool.com>
 Date: Tue, 17 Jan 2023 01:20:59 +0200
-Subject: [PATCH 05/10] StorPool: fix the "rename volume" unit test emulation
+Subject: [PATCH 4/9] StorPool: fix the "rename volume" unit test emulation
 
 Also update the "name" field of the actual data structure in
 the fake list of volumes.
@@ -12,10 +12,10 @@
  1 file changed, 6 insertions(+), 1 deletion(-)
 
 diff --git a/cinder/tests/unit/volume/drivers/test_storpool.py b/cinder/tests/unit/volume/drivers/test_storpool.py
-index 2e6f56526..f878c6d26 100644
+index 0eac3d957..442bdbb88 100644
 --- a/cinder/tests/unit/volume/drivers/test_storpool.py
 +++ b/cinder/tests/unit/volume/drivers/test_storpool.py
-@@ -135,7 +135,10 @@ class MockAPI(object):
+@@ -134,7 +134,10 @@ class MockAPI(object):
              volumes[name]['size'] = data['size']
  
          if 'rename' in data and data['rename'] != name:
@@ -27,7 +27,7 @@
              del volumes[name]
  
  
-@@ -259,6 +262,8 @@ class StorPoolTestCase(test.TestCase):
+@@ -258,6 +261,8 @@ class StorPoolTestCase(test.TestCase):
      def assertVolumeNames(self, names):
          self.assertListEqual(sorted([volumeName(n) for n in names]),
                               sorted(volumes.keys()))
@@ -37,5 +37,5 @@
      @mock_volume_types
      def test_create_delete_volume(self):
 -- 
-2.42.0
+2.43.0
 
diff --git a/patches/openstack/cinder/sep-sp-iscsi.patch b/patches/openstack/cinder/sep-sp-iscsi.patch
index 8c07013..085e9e8 100644
--- a/patches/openstack/cinder/sep-sp-iscsi.patch
+++ b/patches/openstack/cinder/sep-sp-iscsi.patch
@@ -1,7 +1,7 @@
-From 15fe701cfc698a2d8d3ce12ba33983a42e50411e Mon Sep 17 00:00:00 2001
+From 809a5c657faa1b1cbe26a7ae0aad77840300498f Mon Sep 17 00:00:00 2001
 From: Peter Penchev <openstack-dev@storpool.com>
 Date: Mon, 12 Mar 2018 12:00:10 +0200
-Subject: [PATCH 10/10] Add iSCSI export support to the StorPool driver
+Subject: [PATCH 9/9] Add iSCSI export support to the StorPool driver
 
 Add four new driver options:
 - iscsi_cinder_volume: use StorPool iSCSI attachments whenever
@@ -33,10 +33,10 @@
  create mode 100644 releasenotes/notes/storpool-iscsi-cefcfe590a07c5c7.yaml
 
 diff --git a/cinder/tests/unit/volume/drivers/test_storpool.py b/cinder/tests/unit/volume/drivers/test_storpool.py
-index 95a1ffffd..2b76e7c75 100644
+index 94074d218..781d1a0ef 100644
 --- a/cinder/tests/unit/volume/drivers/test_storpool.py
 +++ b/cinder/tests/unit/volume/drivers/test_storpool.py
-@@ -14,15 +14,25 @@
+@@ -14,14 +14,24 @@
  #    under the License.
  
  
@@ -51,7 +51,6 @@
  
  import ddt
  from oslo_utils import units
- import six
  
 +if TYPE_CHECKING:
 +    if sys.version_info >= (3, 11):
@@ -62,7 +61,7 @@
  
  fakeStorPool = mock.Mock()
  fakeStorPool.spopenstack = mock.Mock()
-@@ -32,12 +42,21 @@ fakeStorPool.sptypes = mock.Mock()
+@@ -31,12 +41,21 @@ fakeStorPool.sptypes = mock.Mock()
  sys.modules['storpool'] = fakeStorPool
  
  
@@ -84,7 +83,7 @@
  volume_types = {
      1: {},
      2: {'storpool_template': 'ssd'},
-@@ -71,6 +90,10 @@ def snapshotName(vtype, vid):
+@@ -70,6 +89,10 @@ def snapshotName(vtype, vid):
      return 'os--snap--{t}--{id}'.format(t=vtype, id=vid)
  
  
@@ -95,7 +94,7 @@
  class MockDisk(object):
      def __init__(self, diskId):
          self.id = diskId
-@@ -181,6 +204,273 @@ def MockVolumeUpdateDesc(size):
+@@ -180,6 +203,273 @@ def MockVolumeUpdateDesc(size):
      return {'size': size}
  
  
@@ -369,7 +368,7 @@
  def MockSPConfig(section = 's01'):
      res = {}
      m = re.match('^s0*([A-Za-z0-9]+)$', section)
-@@ -222,7 +512,15 @@ class StorPoolTestCase(test.TestCase):
+@@ -221,7 +511,15 @@ class StorPoolTestCase(test.TestCase):
          self.cfg.volume_backend_name = 'storpool_test'
          self.cfg.storpool_template = None
          self.cfg.storpool_replication = 3
@@ -385,7 +384,7 @@
          mock_exec = mock.Mock()
          mock_exec.return_value = ('', '')
  
-@@ -231,7 +529,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -230,7 +528,7 @@ class StorPoolTestCase(test.TestCase):
          self.driver.check_for_setup_error()
  
      @ddt.data(
@@ -394,7 +393,7 @@
          ({'no-host': None}, KeyError),
          ({'host': 'sbad'}, driver.StorPoolConfigurationInvalid),
          ({'host': 's01'}, None),
-@@ -247,7 +545,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -246,7 +544,7 @@ class StorPoolTestCase(test.TestCase):
                                conn)
  
      @ddt.data(
@@ -403,7 +402,7 @@
          ({'no-host': None}, KeyError),
          ({'host': 'sbad'}, driver.StorPoolConfigurationInvalid),
      )
-@@ -286,7 +584,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -285,7 +583,7 @@ class StorPoolTestCase(test.TestCase):
              self.assertEqual(21, pool['total_capacity_gb'])
              self.assertEqual(5, int(pool['free_capacity_gb']))
  
@@ -412,7 +411,7 @@
              self.assertFalse(pool['QoS_support'])
              self.assertFalse(pool['thick_provisioning_support'])
              self.assertTrue(pool['thin_provisioning_support'])
-@@ -644,3 +942,136 @@ class StorPoolTestCase(test.TestCase):
+@@ -641,3 +939,136 @@ class StorPoolTestCase(test.TestCase):
                           self.driver.get_pool({
                               'volume_type': volume_type
                           }))
@@ -550,7 +549,7 @@
 +            volumeName(fconst.VOLUME_ID),
 +        )
 diff --git a/cinder/volume/drivers/storpool.py b/cinder/volume/drivers/storpool.py
-index b15a201c3..d8c420a66 100644
+index caa0ce06e..cec7589f2 100644
 --- a/cinder/volume/drivers/storpool.py
 +++ b/cinder/volume/drivers/storpool.py
 @@ -15,6 +15,7 @@
@@ -561,7 +560,7 @@
  import platform
  
  from oslo_config import cfg
-@@ -44,6 +45,31 @@ if storpool:
+@@ -43,6 +44,31 @@ if storpool:
  
  
  storpool_opts = [
@@ -593,7 +592,7 @@
      cfg.StrOpt('storpool_template',
                 default=None,
                 help='The StorPool template for volumes with no type.'),
-@@ -105,6 +131,7 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -104,6 +130,7 @@ class StorPoolDriver(driver.VolumeDriver):
          self._ourId = None
          self._ourIdInt = None
          self._attach = None
@@ -601,7 +600,7 @@
  
      @staticmethod
      def get_driver_options():
-@@ -162,10 +189,326 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -161,10 +188,326 @@ class StorPoolDriver(driver.VolumeDriver):
              raise StorPoolConfigurationInvalid(
                  section=hostname, param='SP_OURID', error=e)
  
@@ -928,7 +927,7 @@
          return {'driver_volume_type': 'storpool',
                  'data': {
                      'client_id': self._storpool_client_id(connector),
-@@ -174,6 +517,9 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -173,6 +516,9 @@ class StorPoolDriver(driver.VolumeDriver):
                  }}
  
      def terminate_connection(self, volume, connector, **kwargs):
@@ -938,7 +937,7 @@
          pass
  
      def create_snapshot(self, snapshot):
-@@ -275,11 +621,20 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -274,11 +620,20 @@ class StorPoolDriver(driver.VolumeDriver):
                      )
  
      def create_export(self, context, volume, connector):
@@ -960,7 +959,7 @@
      def delete_volume(self, volume):
          name = self._attach.volumeName(volume['id'])
          try:
-@@ -316,6 +671,17 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -315,6 +670,17 @@ class StorPoolDriver(driver.VolumeDriver):
              LOG.error("StorPoolDriver API initialization failed: %s", e)
              raise
  
@@ -978,7 +977,7 @@
      def _update_volume_stats(self):
          try:
              dl = self._attach.api().disksList()
-@@ -341,7 +707,7 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -340,7 +706,7 @@ class StorPoolDriver(driver.VolumeDriver):
              'total_capacity_gb': total / units.Gi,
              'free_capacity_gb': free / units.Gi,
              'reserved_percentage': 0,
@@ -987,7 +986,7 @@
              'QoS_support': False,
              'thick_provisioning_support': False,
              'thin_provisioning_support': True,
-@@ -360,7 +726,9 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -359,7 +725,9 @@ class StorPoolDriver(driver.VolumeDriver):
                  'volume_backend_name') or 'storpool',
              'vendor_name': 'StorPool',
              'driver_version': self.VERSION,
@@ -1105,5 +1104,5 @@
 +    ``iscsi_export_to`` is set to ``*`, that is, all StorPool volumes will be
 +    exported via iSCSI to all initiators.
 -- 
-2.42.0
+2.43.0
 
diff --git a/patches/openstack/cinder/sep-sp-leave-it-to-brick.patch b/patches/openstack/cinder/sep-sp-leave-it-to-brick.patch
index e4583e8..29496eb 100644
--- a/patches/openstack/cinder/sep-sp-leave-it-to-brick.patch
+++ b/patches/openstack/cinder/sep-sp-leave-it-to-brick.patch
@@ -1,7 +1,7 @@
-From 9f79ab1ac4e5392b7c1ad8ab6f327abecea6e528 Mon Sep 17 00:00:00 2001
+From a0fb970b3b8dc3f95e2198d68f1c992f4542119f Mon Sep 17 00:00:00 2001
 From: Peter Penchev <openstack-dev@storpool.com>
 Date: Tue, 20 Apr 2021 17:46:41 +0300
-Subject: [PATCH 02/10] StorPool: drop _attach_volume() and _detach_volume()
+Subject: [PATCH 1/9] StorPool: drop _attach_volume() and _detach_volume()
 
 Our os-brick connector already handles the "keep track of which volume
 is attached for what reason" calls to storpool.spopenstack. However,
@@ -23,10 +23,10 @@
  create mode 100644 releasenotes/notes/bug-1939241-storpool-attach-encrypted-volumes-783c723683b8f9a9.yaml
 
 diff --git a/cinder/tests/unit/volume/drivers/test_storpool.py b/cinder/tests/unit/volume/drivers/test_storpool.py
-index a5f763b96..2e6f56526 100644
+index 4c0241eca..0eac3d957 100644
 --- a/cinder/tests/unit/volume/drivers/test_storpool.py
 +++ b/cinder/tests/unit/volume/drivers/test_storpool.py
-@@ -225,7 +225,9 @@ class StorPoolTestCase(test.TestCase):
+@@ -224,7 +224,9 @@ class StorPoolTestCase(test.TestCase):
      def test_initialize_connection_good(self, cid, hid, name):
          c = self.driver.initialize_connection({'id': hid}, {'host': name})
          self.assertEqual('storpool', c['driver_volume_type'])
@@ -38,10 +38,10 @@
      def test_noop_functions(self):
          self.driver.terminate_connection(None, None)
 diff --git a/cinder/volume/drivers/storpool.py b/cinder/volume/drivers/storpool.py
-index d42d1c68c..1fc4262b2 100644
+index abfdad160..d21fb52f6 100644
 --- a/cinder/volume/drivers/storpool.py
 +++ b/cinder/volume/drivers/storpool.py
-@@ -168,6 +168,7 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -167,6 +167,7 @@ class StorPoolDriver(driver.VolumeDriver):
                  'data': {
                      'client_id': self._storpool_client_id(connector),
                      'volume': volume['id'],
@@ -49,7 +49,7 @@
                  }}
  
      def terminate_connection(self, volume, connector, **kwargs):
-@@ -314,45 +315,6 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -313,45 +314,6 @@ class StorPoolDriver(driver.VolumeDriver):
              'pools': pools
          }
  
@@ -109,5 +109,5 @@
 +    encrypted StorPool volumes by dropping the needlessly and incompletely
 +    overridden `_attach_volume()` and `_detach_volume()` methods.
 -- 
-2.42.0
+2.43.0
 
diff --git a/patches/openstack/cinder/sep-sp-retype-vol.patch b/patches/openstack/cinder/sep-sp-retype-vol.patch
index 0e48852..94caf52 100644
--- a/patches/openstack/cinder/sep-sp-retype-vol.patch
+++ b/patches/openstack/cinder/sep-sp-retype-vol.patch
@@ -1,7 +1,7 @@
-From 816aa85f4b3b081f1e79436b9c6c60d47fb220e5 Mon Sep 17 00:00:00 2001
+From 46d0c4c964abda3c8018e7896acab480502f11b3 Mon Sep 17 00:00:00 2001
 From: Peter Penchev <openstack-dev@storpool.com>
 Date: Wed, 14 Dec 2022 17:55:56 +0200
-Subject: [PATCH 06/10] StorPool: fix the retype volume flow
+Subject: [PATCH 5/9] StorPool: fix the retype volume flow
 
 Change-Id: I786733aae17dea47e3e6f2a393a947bfb46e70a3
 Closes-Bug: #2002995
@@ -11,10 +11,10 @@
  2 files changed, 47 insertions(+), 16 deletions(-)
 
 diff --git a/cinder/tests/unit/volume/drivers/test_storpool.py b/cinder/tests/unit/volume/drivers/test_storpool.py
-index f878c6d26..24715fa29 100644
+index 442bdbb88..8792678ed 100644
 --- a/cinder/tests/unit/volume/drivers/test_storpool.py
 +++ b/cinder/tests/unit/volume/drivers/test_storpool.py
-@@ -358,12 +358,6 @@ class StorPoolTestCase(test.TestCase):
+@@ -356,12 +356,6 @@ class StorPoolTestCase(test.TestCase):
                                                   'available')
          self.assertDictEqual({'_name_id': '1'}, res)
  
@@ -27,8 +27,8 @@
          # Success: rename the migrated volume to match the original
          res = self.driver.update_migrated_volume(None, {'id': '3'},
                                                   {'id': '2', '_name_id': '3'},
-@@ -374,6 +368,16 @@ class StorPoolTestCase(test.TestCase):
-                              volumes.keys())
+@@ -371,6 +365,16 @@ class StorPoolTestCase(test.TestCase):
+                               volumes.keys())
          self.assertVolumeNames(('1', '3',))
  
 +        # Success: swap volume names with an existing volume
@@ -45,10 +45,10 @@
              self.driver.delete_volume({'id': vid})
          self.assertVolumeNames([])
 diff --git a/cinder/volume/drivers/storpool.py b/cinder/volume/drivers/storpool.py
-index 37e36fd61..97d188fd4 100644
+index 6c67ae567..c2b566f4a 100644
 --- a/cinder/volume/drivers/storpool.py
 +++ b/cinder/volume/drivers/storpool.py
-@@ -353,10 +353,12 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -352,10 +352,12 @@ class StorPoolDriver(driver.VolumeDriver):
                              update['template'] = templ
                          else:
                              update['replication'] = repl
@@ -65,7 +65,7 @@
  
          if update:
              name = self._attach.volumeName(volume['id'])
-@@ -381,21 +383,46 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -380,21 +382,46 @@ class StorPoolDriver(driver.VolumeDriver):
                        'created as part of the migration from '
                        '"%(oid)s".', {'tid': temp_id, 'oid': orig_id})
              return {'_name_id': new_volume['_name_id'] or new_volume['id']}
@@ -119,5 +119,5 @@
 +                      {'tname': temp_name, 'oname': orig_name, 'err': e})
 +            return {'_name_id': new_volume['_name_id'] or new_volume['id']}
 -- 
-2.42.0
+2.43.0
 
diff --git a/patches/openstack/cinder/sep-sp-rm-backup.patch b/patches/openstack/cinder/sep-sp-rm-backup.patch
index 8c7d334..85f0eeb 100644
--- a/patches/openstack/cinder/sep-sp-rm-backup.patch
+++ b/patches/openstack/cinder/sep-sp-rm-backup.patch
@@ -1,7 +1,7 @@
-From a1b26cc52eb2855226052e19301e6e6827dcb699 Mon Sep 17 00:00:00 2001
+From 090fb2fb26ccfe699712c350e2c468f76fbfd560 Mon Sep 17 00:00:00 2001
 From: Peter Penchev <openstack-dev@storpool.com>
 Date: Mon, 11 May 2020 11:02:53 +0300
-Subject: [PATCH 03/10] StorPool driver: remove the obsolete backup_volume()
+Subject: [PATCH 2/9] StorPool driver: remove the obsolete backup_volume()
 
 Follow suit with I984de3df803f12dbb95e3309e668b3fbd519e70f.
 
@@ -11,10 +11,10 @@
  1 file changed, 29 deletions(-)
 
 diff --git a/cinder/volume/drivers/storpool.py b/cinder/volume/drivers/storpool.py
-index 1fc4262b2..d1c6f0ca5 100644
+index d21fb52f6..9414bc62a 100644
 --- a/cinder/volume/drivers/storpool.py
 +++ b/cinder/volume/drivers/storpool.py
-@@ -315,35 +315,6 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -314,35 +314,6 @@ class StorPoolDriver(driver.VolumeDriver):
              'pools': pools
          }
  
@@ -51,5 +51,5 @@
          req_id = context.request_id
          volname = self._attach.volumeName(volume['id'])
 -- 
-2.42.0
+2.43.0
 
diff --git a/patches/openstack/cinder/sep-sp-rm-copy-volimg.patch b/patches/openstack/cinder/sep-sp-rm-copy-volimg.patch
index 6fe2319..5a68f76 100644
--- a/patches/openstack/cinder/sep-sp-rm-copy-volimg.patch
+++ b/patches/openstack/cinder/sep-sp-rm-copy-volimg.patch
@@ -1,4 +1,4 @@
-From 7daed00eb1208ed62a9bd7f8432ed6d48b2efb01 Mon Sep 17 00:00:00 2001
+From d2a67266ecc5a9b851b589da1839b74deaec3585 Mon Sep 17 00:00:00 2001
 From: Peter Penchev <openstack-dev@storpool.com>
 Date: Mon, 26 Sep 2022 16:04:36 +0300
 Subject: [PATCH 3/9] StorPool: drop copy_image_to_volume() and
@@ -14,10 +14,10 @@
  1 file changed, 45 deletions(-)
 
 diff --git a/cinder/volume/drivers/storpool.py b/cinder/volume/drivers/storpool.py
-index c595c1c0c..37e36fd61 100644
+index 9414bc62a..6c67ae567 100644
 --- a/cinder/volume/drivers/storpool.py
 +++ b/cinder/volume/drivers/storpool.py
-@@ -315,51 +315,6 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -314,51 +314,6 @@ class StorPoolDriver(driver.VolumeDriver):
              'pools': pools
          }
  
