diff --git a/patches/openstack/cinder/sep-sp-drop-copy-img-vol.patch b/patches/openstack/cinder/sep-sp-drop-copy-img-vol.patch
deleted file mode 100644
index 5010855..0000000
--- a/patches/openstack/cinder/sep-sp-drop-copy-img-vol.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From 51a9b386555228e1ba09f0ceebbe18f4b1783ef7 Mon Sep 17 00:00:00 2001
-From: Peter Penchev <openstack-dev@storpool.com>
-Date: Wed, 14 Dec 2022 17:55:18 +0200
-Subject: [PATCH 1/2] StorPool: drop copy_image_to_volume and
- copy_volume_to_image
-
-These two methods do not do anything useful any more, and they actually
-get in the way of some new Cinder flows.
-
-Change-Id: I2a7efc87c1bb87e8af66dc9b0cf8fa6289f55f97
----
- cinder/volume/drivers/storpool.py | 61 -------------------------------
- 1 file changed, 61 deletions(-)
-
-diff --git a/cinder/volume/drivers/storpool.py b/cinder/volume/drivers/storpool.py
-index 64e92fe7e..b586c3216 100644
---- a/cinder/volume/drivers/storpool.py
-+++ b/cinder/volume/drivers/storpool.py
-@@ -434,67 +434,6 @@ class StorPoolDriver(driver.VolumeDriver):
-             'pools': pools
-         }
- 
--    def copy_volume_to_image(self, context, volume, image_service, image_meta):
--        req_id = context.request_id
--        volname = self._attach.volumeName(volume['id'])
--        name = self._attach.volsnapName(volume['id'], req_id)
--        try:
--            self._attach.api().snapshotCreate(volname, {'name': name})
--            self._attach.add(req_id, {
--                'volume': name,
--                'type': 'copy-from',
--                'id': req_id,
--                'rights': 1,
--                'volsnap': True
--            })
--            self._attach.sync(req_id, None)
--        except spapi.ApiError as e:
--            raise self._backendException(e)
--        try:
--            return super(StorPoolDriver, self).copy_volume_to_image(
--                context, volume, image_service, image_meta)
--        finally:
--            self._attach.remove(req_id)
--            try:
--                self._attach.sync(req_id, name)
--            except spapi.ApiError as e:
--                LOG.error(
--                    'Could not detach the temp snapshot %(name)s for '
--                    '%(vol)s: %(err)s',
--                    {'name': name, 'vol': volname, 'err': e})
--            try:
--                self._attach.api().snapshotDelete(name)
--            except spapi.ApiError as e:
--                LOG.error(
--                    'Could not remove the temp snapshot %(name)s for '
--                    '%(vol)s: %(err)s',
--                    {'name': name, 'vol': volname, 'err': e})
--
--    def copy_image_to_volume(self, context, volume, image_service, image_id):
--        req_id = context.request_id
--        name = self._attach.volumeName(volume['id'])
--        self._attach.add(req_id, {
--            'volume': name,
--            'type': 'copy-to',
--            'id': req_id,
--            'rights': 2
--        })
--        try:
--            self._attach.sync(req_id, None)
--        except spapi.ApiError as e:
--            raise self._backendException(e)
--        try:
--            return super(StorPoolDriver, self).copy_image_to_volume(
--                context, volume, image_service, image_id)
--        finally:
--            self._attach.remove(req_id)
--            try:
--                self._attach.sync(req_id, name)
--            except spapi.ApiError as e:
--                LOG.error(
--                    'Could not detach the %(name)s volume: %(err)s',
--                    {'name': name, 'err': e})
--
-     def extend_volume(self, volume, new_size):
-         size = int(new_size) * units.Gi
-         name = self._attach.volumeName(volume['id'])
--- 
-2.35.1
-
diff --git a/patches/series.experimental b/patches/series.experimental
index 45d7be5..0de460b 100644
--- a/patches/series.experimental
+++ b/patches/series.experimental
@@ -5,7 +5,6 @@
 openstack/cinder/sep-sp-rm-backup.patch
 openstack/cinder/sep-sp-rm-copy-volimg.patch
 openstack/cinder/sep-sp-clone-volume.patch
-openstack/cinder/sep-sp-drop-copy-img-vol.patch
 openstack/cinder/sep-sp-retype-vol.patch
 openstack/cinderlib/storpool-test-20190910.patch
 openstack/devstack/eatmydata.patch
