Do not fail when depth is greater than rbd_max_clone_depth
Removed a sanity check in the code that raised an exception if the clone depth of a volume to be cloned exceeded the rbd_max_clone_depth config value. A consequence of this check was that if an operator lowered the value, volumes whose clone depth was greater than the new value (as would be allowed by the previous, higher setting) could no longer be cloned. Change-Id: I8c445058a25c2eca2fda91bdeb6befedae34ccf2 Closes-bug: #1901241 (cherry picked from commit8d8d242c39
) (cherry picked from commit23a821b2a4
) (cherry picked from commitf6e5fe187e
) (cherry picked from commit0a3345cc05
)
This commit is contained in:
parent
463c17a3f9
commit
66aad39a44
|
@ -83,7 +83,9 @@ RBD_OPTS = [
|
|||
default=5,
|
||||
help='Maximum number of nested volume clones that are '
|
||||
'taken before a flatten occurs. Set to 0 to disable '
|
||||
'cloning.'),
|
||||
'cloning. Note: lowering this value will not affect '
|
||||
'existing volumes whose clone depth exceeds the new '
|
||||
'value.'),
|
||||
cfg.IntOpt('rbd_store_chunk_size', default=4,
|
||||
help='Volumes will be chunked into objects of this size '
|
||||
'(in megabytes).'),
|
||||
|
@ -607,12 +609,6 @@ class RBDDriver(driver.CloneableImageVD, driver.MigrateVD,
|
|||
if not parent:
|
||||
return depth
|
||||
|
||||
# If clone depth was reached, flatten should have occurred so if it has
|
||||
# been exceeded then something has gone wrong.
|
||||
if depth > self.configuration.rbd_max_clone_depth:
|
||||
raise Exception(_("clone depth exceeds limit of %s") %
|
||||
(self.configuration.rbd_max_clone_depth))
|
||||
|
||||
return self._get_clone_depth(client, parent, depth + 1)
|
||||
|
||||
def _extend_if_required(self, volume, src_vref):
|
||||
|
@ -682,7 +678,7 @@ class RBDDriver(driver.CloneableImageVD, driver.MigrateVD,
|
|||
depth = self._get_clone_depth(client, src_name)
|
||||
# If dest volume is a clone and rbd_max_clone_depth reached,
|
||||
# flatten the dest after cloning. Zero rbd_max_clone_depth means
|
||||
# infinite is allowed.
|
||||
# volumes are always flattened.
|
||||
if depth >= self.configuration.rbd_max_clone_depth:
|
||||
LOG.info("maximum clone depth (%d) has been reached - "
|
||||
"flattening dest volume",
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
fixes:
|
||||
- |
|
||||
RBD driver `bug #1901241
|
||||
<https://bugs.launchpad.net/cinder/+bug/1901241>`_:
|
||||
Fixed an issue where decreasing the ``rbd_max_clone_depth`` configuration
|
||||
option would prevent volumes that had already exceeded that depth from
|
||||
being cloned.
|
Loading…
Reference in New Issue