diff --git a/patches/openstack/cinder/sep-sp-clone-volume.patch b/patches/openstack/cinder/sep-sp-clone-volume.patch
index cbf209e..2c25551 100644
--- a/patches/openstack/cinder/sep-sp-clone-volume.patch
+++ b/patches/openstack/cinder/sep-sp-clone-volume.patch
@@ -1,7 +1,7 @@
-From 9565e7e32bee1e613f1e09a8989e1bad7f90fa08 Mon Sep 17 00:00:00 2001
+From 110d748871ed078eff42bd370bcdfb643614e6f5 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 7/7] StorPool: create_cloned_volume() improvements
+Subject: [PATCH 3/3] 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),
@@ -29,6 +29,8 @@
  4 files changed, 208 insertions(+), 34 deletions(-)
  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
 --- a/cinder/tests/unit/volume/drivers/test_storpool.py
 +++ b/cinder/tests/unit/volume/drivers/test_storpool.py
 @@ -14,6 +14,7 @@
@@ -39,7 +41,7 @@
  import re
  import sys
  from unittest import mock
-@@ -110,13 +111,33 @@
+@@ -110,13 +111,33 @@ class MockAPI(object):
      def snapshotCreate(self, vname, snap):
          snapshots[snap['name']] = dict(volumes[vname])
  
@@ -75,7 +77,7 @@
  
      def volumeDelete(self, name):
          del volumes[name]
-@@ -174,6 +195,23 @@
+@@ -174,6 +195,23 @@ fakeStorPool.spopenstack.AttachDB = MockAttachDB
  fakeStorPool.sptypes.VolumeUpdateDesc = MockVolumeUpdateDesc
  
  
@@ -99,7 +101,7 @@
  @ddt.ddt
  class StorPoolTestCase(test.TestCase):
  
-@@ -265,6 +303,11 @@
+@@ -265,6 +303,11 @@ class StorPoolTestCase(test.TestCase):
          self.assertListEqual(sorted([volumeName(n) for n in names]),
                               sorted(data['name'] for data in volumes.values()))
  
@@ -111,7 +113,7 @@
      @mock_volume_types
      def test_create_delete_volume(self):
          self.assertVolumeNames([])
-@@ -277,7 +320,7 @@
+@@ -277,7 +320,7 @@ class StorPoolTestCase(test.TestCase):
          self.assertVolumeNames(('1',))
          v = volumes[volumeName('1')]
          self.assertEqual(1 * units.Gi, v['size'])
@@ -120,7 +122,7 @@
          self.assertEqual(3, v['replication'])
  
          caught = False
-@@ -297,7 +340,7 @@
+@@ -297,7 +340,7 @@ class StorPoolTestCase(test.TestCase):
          self.assertVolumeNames(('1',))
          v = volumes[volumeName('1')]
          self.assertEqual(2 * units.Gi, v['size'])
@@ -129,7 +131,7 @@
          self.assertEqual(3, v['replication'])
  
          self.driver.create_volume({'id': '2', 'name': 'v2', 'size': 3,
-@@ -305,7 +348,7 @@
+@@ -305,7 +348,7 @@ class StorPoolTestCase(test.TestCase):
          self.assertVolumeNames(('1', '2'))
          v = volumes[volumeName('2')]
          self.assertEqual(3 * units.Gi, v['size'])
@@ -138,7 +140,7 @@
          self.assertEqual(3, v['replication'])
  
          self.driver.create_volume({'id': '3', 'name': 'v2', 'size': 4,
-@@ -327,7 +370,7 @@
+@@ -327,7 +370,7 @@ class StorPoolTestCase(test.TestCase):
          # Make sure the dictionary is not corrupted somehow...
          v = volumes[volumeName('1')]
          self.assertEqual(2 * units.Gi, v['size'])
@@ -147,7 +149,7 @@
          self.assertEqual(3, v['replication'])
  
          for vid in ('1', '2', '3', '4'):
-@@ -395,16 +438,17 @@
+@@ -395,16 +438,17 @@ class StorPoolTestCase(test.TestCase):
          self.driver.extend_volume({'id': '1'}, 2)
          self.assertEqual(2 * units.Gi, volumes[volumeName('1')]['size'])
  
@@ -173,7 +175,7 @@
  
          self.driver.delete_volume({'id': 1})
          self.driver.delete_volume({'id': 2})
-@@ -412,6 +456,78 @@
+@@ -412,6 +456,78 @@ class StorPoolTestCase(test.TestCase):
          self.assertDictEqual({}, volumes)
          self.assertDictEqual({}, snapshots)
  
@@ -252,7 +254,7 @@
      @mock_volume_types
      def test_config_replication(self):
          self.assertVolumeNames([])
-@@ -431,7 +547,7 @@
+@@ -431,7 +547,7 @@ class StorPoolTestCase(test.TestCase):
          self.assertVolumeNames(('cfgrepl1',))
          v = volumes[volumeName('cfgrepl1')]
          self.assertEqual(3, v['replication'])
@@ -261,7 +263,7 @@
          self.driver.delete_volume({'id': 'cfgrepl1'})
  
          self.driver.configuration.storpool_replication = 2
-@@ -445,7 +561,7 @@
+@@ -445,7 +561,7 @@ class StorPoolTestCase(test.TestCase):
          self.assertVolumeNames(('cfgrepl2',))
          v = volumes[volumeName('cfgrepl2')]
          self.assertEqual(2, v['replication'])
@@ -270,7 +272,7 @@
          self.driver.delete_volume({'id': 'cfgrepl2'})
  
          self.driver.create_volume({'id': 'cfgrepl3', 'name': 'v1', 'size': 1,
-@@ -477,7 +593,7 @@
+@@ -477,7 +593,7 @@ class StorPoolTestCase(test.TestCase):
          self.assertVolumeNames(('cfgtempl1',))
          v = volumes[volumeName('cfgtempl1')]
          self.assertEqual(3, v['replication'])
@@ -279,9 +281,11 @@
          self.driver.delete_volume({'id': 'cfgtempl1'})
  
          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 cb5680d29..5aa30398e 100644
 --- a/cinder/volume/drivers/storpool.py
 +++ b/cinder/volume/drivers/storpool.py
-@@ -19,11 +19,13 @@
+@@ -19,11 +19,13 @@ import platform
  
  from oslo_config import cfg
  from oslo_log import log as logging
@@ -295,7 +299,7 @@
  from cinder import exception
  from cinder.i18n import _
  from cinder import interface
-@@ -197,30 +199,80 @@
+@@ -197,30 +199,80 @@ class StorPoolDriver(driver.VolumeDriver):
  
      def create_cloned_volume(self, volume, src_vref):
          refname = self._attach.volumeName(src_vref['id'])
@@ -354,7 +358,11 @@
 +                    snapname,
 +                    {'template': template},
 +                )
-+            except spapi.ApiError as e:
+             except spapi.ApiError as e:
+-                # ARGH!
+-                LOG.error("Could not delete the temp snapshot %(name)s: "
+-                          "%(msg)s",
+-                          {'name': snapname, 'msg': e})
 +                raise self._backendException(e)
 +
 +            try:
@@ -371,11 +379,7 @@
 +                    snapname,
 +                    {'tags': {'transient': '1.0'}},
 +                )
-             except spapi.ApiError as e:
--                # ARGH!
--                LOG.error("Could not delete the temp snapshot %(name)s: "
--                          "%(msg)s",
--                          {'name': snapname, 'msg': e})
++            except spapi.ApiError as e:
 +                raise self._backendException(e)
 +        except Exception:
 +            with excutils.save_and_reraise_exception():
@@ -392,9 +396,11 @@
  
      def create_export(self, context, volume, connector):
          pass
+diff --git a/driver-requirements.txt b/driver-requirements.txt
+index f501e9fcd..d55fb86c7 100644
 --- a/driver-requirements.txt
 +++ b/driver-requirements.txt
-@@ -41,7 +41,7 @@
+@@ -41,7 +41,7 @@ infi.dtypes.wwn # PSF
  infi.dtypes.iqn # PSF
  
  # Storpool
@@ -403,6 +409,9 @@
  storpool.spopenstack>=2.2.1 # Apache-2.0
  
  # Datera
+diff --git a/releasenotes/notes/storpool-clone-better-dca90f40c9273de9.yaml b/releasenotes/notes/storpool-clone-better-dca90f40c9273de9.yaml
+new file mode 100644
+index 000000000..180427d9e
 --- /dev/null
 +++ b/releasenotes/notes/storpool-clone-better-dca90f40c9273de9.yaml
 @@ -0,0 +1,6 @@
@@ -412,3 +421,6 @@
 +    StorPool driver: improved the way volumes are clonsed into different
 +    StorPool templates (exposed as Cinder storage pools) if requested,
 +    eliminating some data duplication in the underlying StorPool cluster.
+-- 
+2.39.0
+
diff --git a/patches/openstack/cinder/sep-sp-fix-test-rename.patch b/patches/openstack/cinder/sep-sp-fix-test-rename.patch
index 742699f..3899848 100644
--- a/patches/openstack/cinder/sep-sp-fix-test-rename.patch
+++ b/patches/openstack/cinder/sep-sp-fix-test-rename.patch
@@ -1,12 +1,21 @@
-StorPool: fix the "rename volume" unit test emulation
+From 498aa10da848c6d5e75b1d7f0d2c67fd9536f251 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 1/3] StorPool: fix the "rename volume" unit test emulation
 
 Also update the "name" field of the actual data structure in
 the fake list of volumes.
 
 Change-Id: Iee9e3feea1af4f3d0acdf05ea1b540ecf59e755b
+---
+ cinder/tests/unit/volume/drivers/test_storpool.py | 7 ++++++-
+ 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
 --- a/cinder/tests/unit/volume/drivers/test_storpool.py
 +++ b/cinder/tests/unit/volume/drivers/test_storpool.py
-@@ -135,7 +135,10 @@
+@@ -135,7 +135,10 @@ class MockAPI(object):
              volumes[name]['size'] = data['size']
  
          if 'rename' in data and data['rename'] != name:
@@ -18,7 +27,7 @@
              del volumes[name]
  
  
-@@ -259,6 +262,8 @@
+@@ -259,6 +262,8 @@ class StorPoolTestCase(test.TestCase):
      def assertVolumeNames(self, names):
          self.assertListEqual(sorted([volumeName(n) for n in names]),
                               sorted(volumes.keys()))
@@ -27,3 +36,6 @@
  
      @mock_volume_types
      def test_create_delete_volume(self):
+-- 
+2.39.0
+
diff --git a/patches/openstack/cinder/sep-sp-retype-vol.patch b/patches/openstack/cinder/sep-sp-retype-vol.patch
index 70be672..131dd6a 100644
--- a/patches/openstack/cinder/sep-sp-retype-vol.patch
+++ b/patches/openstack/cinder/sep-sp-retype-vol.patch
@@ -1,16 +1,54 @@
-From 15773fc48d174bd6931eac65cae1b000ab72b1fb Mon Sep 17 00:00:00 2001
+From 767b03274054e1c1e422ef8937769ec9851a4111 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 2/2] StorPool: fix the retype volume flow
+Subject: [PATCH 2/3] StorPool: fix the retype volume flow
 
 Change-Id: I786733aae17dea47e3e6f2a393a947bfb46e70a3
+Closes-Bug: #2002995
 ---
- cinder/volume/drivers/storpool.py | 47 ++++++++++++++++++++++++-------
- 1 file changed, 37 insertions(+), 10 deletions(-)
+ .../unit/volume/drivers/test_storpool.py      | 16 ++++---
+ cinder/volume/drivers/storpool.py             | 47 +++++++++++++++----
+ 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
+--- 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):
+                                                  'available')
+         self.assertDictEqual({'_name_id': '1'}, res)
+ 
+-        # Failure: a volume with the original volume's name already exists
+-        res = self.driver.update_migrated_volume(None, {'id': '1'},
+-                                                 {'id': '2', '_name_id': '1'},
+-                                                 'available')
+-        self.assertDictEqual({'_name_id': '1'}, res)
+-
+         # 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())
+         self.assertVolumeNames(('1', '3',))
+ 
++        # Success: swap volume names with an existing volume
++        res = self.driver.update_migrated_volume(None, {'id': '1'},
++                                                 {'id': '3', '_name_id': '1'},
++                                                 'available')
++        self.assertDictEqual({'_name_id': None}, res)
++        six.assertCountEqual(self,
++                             [volumeName('1'), volumeName('3')],
++                             volumes.keys())
++        self.assertVolumeNames(('1', '3',))
++
+         for vid in ('1', '3'):
+             self.driver.delete_volume({'id': vid})
+         self.assertVolumeNames([])
+diff --git a/cinder/volume/drivers/storpool.py b/cinder/volume/drivers/storpool.py
+index cdaf0043d..cb5680d29 100644
 --- a/cinder/volume/drivers/storpool.py
 +++ b/cinder/volume/drivers/storpool.py
-@@ -353,10 +353,12 @@
+@@ -353,10 +353,12 @@ class StorPoolDriver(driver.VolumeDriver):
                              update['template'] = templ
                          else:
                              update['replication'] = repl
@@ -27,7 +65,7 @@
  
          if update:
              name = self._attach.volumeName(volume['id'])
-@@ -381,21 +383,46 @@
+@@ -381,21 +383,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']}
@@ -80,34 +118,6 @@
 +                      '%(err)s',
 +                      {'tname': temp_name, 'oname': orig_name, 'err': e})
 +            return {'_name_id': new_volume['_name_id'] or new_volume['id']}
---- a/cinder/tests/unit/volume/drivers/test_storpool.py
-+++ b/cinder/tests/unit/volume/drivers/test_storpool.py
-@@ -358,18 +358,22 @@
-                                                  'available')
-         self.assertDictEqual({'_name_id': '1'}, res)
- 
--        # Failure: a volume with the original volume's name already exists
--        res = self.driver.update_migrated_volume(None, {'id': '1'},
--                                                 {'id': '2', '_name_id': '1'},
--                                                 'available')
--        self.assertDictEqual({'_name_id': '1'}, res)
--
-         # Success: rename the migrated volume to match the original
-         res = self.driver.update_migrated_volume(None, {'id': '3'},
-                                                  {'id': '2', '_name_id': '3'},
-                                                  'available')
-         self.assertDictEqual({'_name_id': None}, res)
-         six.assertCountEqual(self,
-+                             [volumeName('1'), volumeName('3')],
-+                             volumes.keys())
-+        self.assertVolumeNames(('1', '3',))
-+
-+        # Success: swap volume names with an existing volume
-+        res = self.driver.update_migrated_volume(None, {'id': '1'},
-+                                                 {'id': '3', '_name_id': '1'},
-+                                                 'available')
-+        self.assertDictEqual({'_name_id': None}, res)
-+        six.assertCountEqual(self,
-                              [volumeName('1'), volumeName('3')],
-                              volumes.keys())
-         self.assertVolumeNames(('1', '3',))
+-- 
+2.39.0
+
