diff --git a/patches/openstack/cinder/sep-sp-clone-volume.patch b/patches/openstack/cinder/sep-sp-clone-volume.patch
index abe5bc5..cbf209e 100644
--- a/patches/openstack/cinder/sep-sp-clone-volume.patch
+++ b/patches/openstack/cinder/sep-sp-clone-volume.patch
@@ -29,8 +29,6 @@
  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 2e6f56526..65d4ed304 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 +39,7 @@
  import re
  import sys
  from unittest import mock
-@@ -110,13 +111,33 @@ class MockAPI(object):
+@@ -110,13 +111,33 @@
      def snapshotCreate(self, vname, snap):
          snapshots[snap['name']] = dict(volumes[vname])
  
@@ -77,7 +75,7 @@
  
      def volumeDelete(self, name):
          del volumes[name]
-@@ -171,6 +192,23 @@ fakeStorPool.spopenstack.AttachDB = MockAttachDB
+@@ -174,6 +195,23 @@
  fakeStorPool.sptypes.VolumeUpdateDesc = MockVolumeUpdateDesc
  
  
@@ -101,9 +99,9 @@
  @ddt.ddt
  class StorPoolTestCase(test.TestCase):
  
-@@ -260,6 +298,11 @@ class StorPoolTestCase(test.TestCase):
+@@ -265,6 +303,11 @@
          self.assertListEqual(sorted([volumeName(n) for n in names]),
-                              sorted(volumes.keys()))
+                              sorted(data['name'] for data in volumes.values()))
  
 +    def assertSnapshotNames(self, specs):
 +        self.assertListEqual(
@@ -113,7 +111,7 @@
      @mock_volume_types
      def test_create_delete_volume(self):
          self.assertVolumeNames([])
-@@ -272,7 +315,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -277,7 +320,7 @@
          self.assertVolumeNames(('1',))
          v = volumes[volumeName('1')]
          self.assertEqual(1 * units.Gi, v['size'])
@@ -122,7 +120,7 @@
          self.assertEqual(3, v['replication'])
  
          caught = False
-@@ -292,7 +335,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -297,7 +340,7 @@
          self.assertVolumeNames(('1',))
          v = volumes[volumeName('1')]
          self.assertEqual(2 * units.Gi, v['size'])
@@ -131,7 +129,7 @@
          self.assertEqual(3, v['replication'])
  
          self.driver.create_volume({'id': '2', 'name': 'v2', 'size': 3,
-@@ -300,7 +343,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -305,7 +348,7 @@
          self.assertVolumeNames(('1', '2'))
          v = volumes[volumeName('2')]
          self.assertEqual(3 * units.Gi, v['size'])
@@ -140,7 +138,7 @@
          self.assertEqual(3, v['replication'])
  
          self.driver.create_volume({'id': '3', 'name': 'v2', 'size': 4,
-@@ -322,7 +365,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -327,7 +370,7 @@
          # Make sure the dictionary is not corrupted somehow...
          v = volumes[volumeName('1')]
          self.assertEqual(2 * units.Gi, v['size'])
@@ -149,7 +147,7 @@
          self.assertEqual(3, v['replication'])
  
          for vid in ('1', '2', '3', '4'):
-@@ -386,16 +429,17 @@ class StorPoolTestCase(test.TestCase):
+@@ -395,16 +438,17 @@
          self.driver.extend_volume({'id': '1'}, 2)
          self.assertEqual(2 * units.Gi, volumes[volumeName('1')]['size'])
  
@@ -175,7 +173,7 @@
  
          self.driver.delete_volume({'id': 1})
          self.driver.delete_volume({'id': 2})
-@@ -403,6 +447,78 @@ class StorPoolTestCase(test.TestCase):
+@@ -412,6 +456,78 @@
          self.assertDictEqual({}, volumes)
          self.assertDictEqual({}, snapshots)
  
@@ -254,7 +252,7 @@
      @mock_volume_types
      def test_config_replication(self):
          self.assertVolumeNames([])
-@@ -422,7 +538,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -431,7 +547,7 @@
          self.assertVolumeNames(('cfgrepl1',))
          v = volumes[volumeName('cfgrepl1')]
          self.assertEqual(3, v['replication'])
@@ -263,7 +261,7 @@
          self.driver.delete_volume({'id': 'cfgrepl1'})
  
          self.driver.configuration.storpool_replication = 2
-@@ -436,7 +552,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -445,7 +561,7 @@
          self.assertVolumeNames(('cfgrepl2',))
          v = volumes[volumeName('cfgrepl2')]
          self.assertEqual(2, v['replication'])
@@ -272,7 +270,7 @@
          self.driver.delete_volume({'id': 'cfgrepl2'})
  
          self.driver.create_volume({'id': 'cfgrepl3', 'name': 'v1', 'size': 1,
-@@ -468,7 +584,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -477,7 +593,7 @@
          self.assertVolumeNames(('cfgtempl1',))
          v = volumes[volumeName('cfgtempl1')]
          self.assertEqual(3, v['replication'])
@@ -281,11 +279,9 @@
          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 cdaf0043d..418e5750f 100644
 --- a/cinder/volume/drivers/storpool.py
 +++ b/cinder/volume/drivers/storpool.py
-@@ -19,11 +19,13 @@ import platform
+@@ -19,11 +19,13 @@
  
  from oslo_config import cfg
  from oslo_log import log as logging
@@ -299,7 +295,7 @@
  from cinder import exception
  from cinder.i18n import _
  from cinder import interface
-@@ -197,30 +199,80 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -197,30 +199,80 @@
  
      def create_cloned_volume(self, volume, src_vref):
          refname = self._attach.volumeName(src_vref['id'])
@@ -358,11 +354,7 @@
 +                    snapname,
 +                    {'template': template},
 +                )
-             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)
 +
 +            try:
@@ -379,7 +371,11 @@
 +                    snapname,
 +                    {'tags': {'transient': '1.0'}},
 +                )
-+            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)
 +        except Exception:
 +            with excutils.save_and_reraise_exception():
@@ -396,11 +392,9 @@
  
      def create_export(self, context, volume, connector):
          pass
-diff --git a/driver-requirements.txt b/driver-requirements.txt
-index 0240e7e78..5b992df2e 100644
 --- a/driver-requirements.txt
 +++ b/driver-requirements.txt
-@@ -40,7 +40,7 @@ infi.dtypes.wwn # PSF
+@@ -41,7 +41,7 @@
  infi.dtypes.iqn # PSF
  
  # Storpool
@@ -409,9 +403,6 @@
  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 @@
@@ -421,6 +412,3 @@
 +    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.35.1
-
