Okay, after some further investigation - the pure storage backend used in this scenario should not be using the slow path volume copy when an instance is booted from an image backed by a cinder volume.
The slow path is taken for backends that cannot do an efficient clone (pure storage can), but only if allowed_direct_url_schemes in the cinder.conf is set and includes the 'cinder' label [0] - which it does not by default and that logic was not added as part of the Cinder backend for Glance enablement. I do not think it hurts to include this option by default.
# Try and clone the image if we have it set as a glance location.
if not cloned and 'cinder' in CONF.allowed_direct_url_schemes: model_update, cloned = self._clone_image_volume(context, volume, image_location, image_meta)
Okay, after some further investigation - the pure storage backend used in this scenario should not be using the slow path volume copy when an instance is booted from an image backed by a cinder volume.
The slow path is taken for backends that cannot do an efficient clone (pure storage can), but only if allowed_ direct_ url_schemes in the cinder.conf is set and includes the 'cinder' label [0] - which it does not by default and that logic was not added as part of the Cinder backend for Glance enablement. I do not think it hurts to include this option by default.
[0] - https:/ /opendev. org/openstack/ cinder/ src/branch/ stable/ yoga/cinder/ volume/ flows/manager/ create_ volume. py#L1077
# Try and clone the image if we have it set as a glance location. direct_ url_schemes:
model_ update, cloned = self._clone_ image_volume( context,
volume,
image_ location,
image_ meta)
if not cloned and 'cinder' in CONF.allowed_