diff --git a/patches/openstack/cinder/sep-sp-iscsi.patch b/patches/openstack/cinder/sep-sp-iscsi.patch
index 2c5be36..e516e14 100644
--- a/patches/openstack/cinder/sep-sp-iscsi.patch
+++ b/patches/openstack/cinder/sep-sp-iscsi.patch
@@ -1,4 +1,4 @@
-From 0ae51594a69277e95bae758f9a7ec39de43af365 Mon Sep 17 00:00:00 2001
+From 6ae905667806b39fccb7079ba2f61ba850a9fde3 Mon Sep 17 00:00:00 2001
 From: Peter Penchev <openstack-dev@storpool.com>
 Date: Tue, 5 Nov 2024 11:28:47 +0200
 Subject: [PATCH 9/9] Add iSCSI export support to the StorPool driver
@@ -31,7 +31,7 @@
  3 files changed, 899 insertions(+), 11 deletions(-)
 
 diff --git a/cinder/tests/unit/volume/drivers/test_storpool.py b/cinder/tests/unit/volume/drivers/test_storpool.py
-index 60a351054..7d0d149bf 100644
+index 671bc8def..2afc72820 100644
 --- a/cinder/tests/unit/volume/drivers/test_storpool.py
 +++ b/cinder/tests/unit/volume/drivers/test_storpool.py
 @@ -15,15 +15,19 @@
@@ -320,7 +320,7 @@
  
  def MockSPConfig(section = 's01'):
      res = {}
-@@ -377,7 +626,15 @@ class StorPoolTestCase(test.TestCase):
+@@ -382,7 +631,15 @@ class StorPoolTestCase(test.TestCase):
          self.cfg.volume_backend_name = 'storpool_test'
          self.cfg.storpool_template = None
          self.cfg.storpool_replication = 3
@@ -336,7 +336,7 @@
          mock_exec = mock.Mock()
          mock_exec.return_value = ('', '')
  
-@@ -394,7 +651,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -399,7 +656,7 @@ class StorPoolTestCase(test.TestCase):
              self.driver.check_for_setup_error()
  
      @ddt.data(
@@ -345,7 +345,7 @@
          ({'no-host': None}, KeyError),
          ({'host': 'sbad'}, driver.StorPoolConfigurationInvalid),
          ({'host': 's01'}, None),
-@@ -410,7 +667,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -415,7 +672,7 @@ class StorPoolTestCase(test.TestCase):
                                conn)
  
      @ddt.data(
@@ -354,7 +354,7 @@
          ({'no-host': None}, KeyError),
          ({'host': 'sbad'}, driver.StorPoolConfigurationInvalid),
      )
-@@ -449,7 +706,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -454,7 +711,7 @@ class StorPoolTestCase(test.TestCase):
              self.assertEqual(21, pool['total_capacity_gb'])
              self.assertEqual(5, int(pool['free_capacity_gb']))
  
@@ -363,7 +363,7 @@
              self.assertFalse(pool['QoS_support'])
              self.assertFalse(pool['thick_provisioning_support'])
              self.assertTrue(pool['thin_provisioning_support'])
-@@ -852,3 +1109,178 @@ class StorPoolTestCase(test.TestCase):
+@@ -857,3 +1114,178 @@ class StorPoolTestCase(test.TestCase):
                                 'No such volume',
                                 self.driver.revert_to_snapshot, None,
                                 {'id': vol_id}, {'id': snap_id})
@@ -543,7 +543,7 @@
 +        self.assertFalse(
 +            _export_exists(iapi.get_iscsi_config()['iscsi'], tcase.volume))
 diff --git a/cinder/volume/drivers/storpool.py b/cinder/volume/drivers/storpool.py
-index dd57cf8c5..acdabe558 100644
+index edafb7b21..2d7e25ced 100644
 --- a/cinder/volume/drivers/storpool.py
 +++ b/cinder/volume/drivers/storpool.py
 @@ -17,6 +17,7 @@
@@ -639,19 +639,19 @@
  
  @interface.volumedriver
  class StorPoolDriver(driver.VolumeDriver):
-@@ -264,9 +321,10 @@ class StorPoolDriver(driver.VolumeDriver):
-                   add ignore_errors to the internal _detach_volume() method
-         1.2.3   - Advertise some more driver capabilities.
-         2.0.0   - Implement revert_to_snapshot().
-+        2.0.1   - Add iSCSI export support.
+@@ -267,9 +324,10 @@ class StorPoolDriver(driver.VolumeDriver):
+         2.1.0   - Use a new in-tree API client to communicate with the
+                   StorPool API instead of packages `storpool` and
+                   `storpool.spopenstack`
++        2.2.0   - Add iSCSI export support.
      """
  
--    VERSION = '2.0.0'
-+    VERSION = '2.0.1'
+-    VERSION = '2.1.0'
++    VERSION = '2.2.0'
      CI_WIKI_NAME = 'StorPool_distributed_storage_CI'
  
      def __init__(self, *args, **kwargs):
-@@ -277,6 +335,7 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -280,6 +338,7 @@ class StorPoolDriver(driver.VolumeDriver):
          self._ourIdInt = None
          self._sp_api = None
          self._volume_prefix = None
@@ -659,7 +659,7 @@
  
      @staticmethod
      def get_driver_options():
-@@ -351,10 +410,326 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -354,10 +413,326 @@ class StorPoolDriver(driver.VolumeDriver):
              raise StorPoolConfigurationInvalid(
                  section=hostname, param='SP_OURID', error=e)
  
@@ -986,7 +986,7 @@
          return {'driver_volume_type': 'storpool',
                  'data': {
                      'client_id': self._storpool_client_id(connector),
-@@ -363,6 +738,9 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -366,6 +741,9 @@ class StorPoolDriver(driver.VolumeDriver):
                  }}
  
      def terminate_connection(self, volume, connector, **kwargs):
@@ -996,7 +996,7 @@
          pass
  
      def create_snapshot(self, snapshot):
-@@ -464,11 +842,20 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -467,11 +845,20 @@ class StorPoolDriver(driver.VolumeDriver):
                      )
  
      def create_export(self, context, volume, connector):
@@ -1018,7 +1018,7 @@
      def delete_volume(self, volume):
          name = self._os_to_sp_volume_name(volume['id'])
          try:
-@@ -502,6 +889,17 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -505,6 +892,17 @@ class StorPoolDriver(driver.VolumeDriver):
              LOG.error("StorPoolDriver API initialization failed: %s", e)
              raise
  
@@ -1036,7 +1036,7 @@
      def _update_volume_stats(self):
          try:
              dl = self._sp_api.disks_list()
-@@ -527,7 +925,7 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -530,7 +928,7 @@ class StorPoolDriver(driver.VolumeDriver):
              'total_capacity_gb': total / units.Gi,
              'free_capacity_gb': free / units.Gi,
              'reserved_percentage': 0,
@@ -1045,7 +1045,7 @@
              'QoS_support': False,
              'thick_provisioning_support': False,
              'thin_provisioning_support': True,
-@@ -546,7 +944,9 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -549,7 +947,9 @@ class StorPoolDriver(driver.VolumeDriver):
                  'volume_backend_name') or 'storpool',
              'vendor_name': 'StorPool',
              'driver_version': self.VERSION,
