[Bug 1969643] Re: RBD: Unable to delete a volume which has snapshot/volume children

Mauricio Faria de Oliveira 1969643 at bugs.launchpad.net
Mon Aug 12 15:48:30 UTC 2024


Hi Chengen,

Additionally, and back to the testing comments (sorry for the delay),
your test plan looks good, thanks! I just updated step 6 to reflect
it should fail (depending on scenario 1 or 2 / config option value).

Thanks!

** Description changed:

  [Impact]
  Deleting a volume will fail if it has snapshot or volume children, resulting in an ImageBusy error.
  
  [Fix]
  Upstream has a patch that uses RBD flatten operations to break dependencies between volumes and snapshots, reducing failures when using RBD volume clones and snapshots.
  
  commit 1a675c9aa178c6d9c6ed10fd98f086c46d350d3f
  Author:     Eric Harney <eharney at redhat.com>
  CommitDate: Fri Dec 1 10:17:05 2023 -0500
  
      RBD: Flattening of child volumes during deletion
  
  [Test Plan]
  Here are the common steps for testing.
  1. Prepare an OpenStack environment with cinder-ceph
  2. Create a volume named "vol"
  openstack volume create --image jammy --size 10 vol
  3. Create a snapshot of the volume "vol"
  openstack volume snapshot create --volume vol vol-snap
  4. Create a volume named "vol-copy" from the snapshot
  openstack volume create --snapshot vol-snap vol-copy
  5. Delete the snapshot and then delete the volume "vol"
  openstack volume snapshot delete vol-snap
  openstack volume delete vol
  6. Confirm that the volume "vol" is successfully deleted
+ or deletion failed (depending on the two scenarios below)
  openstack volume list
  
  There are two test scenarios:
  - Enable RBD flatten operations:
  1. Use `juju ssh` to log in to the cinder-volume and add "enable_flatten_children_deletion = True" in the cinder-ceph section of /etc/cinder/cinder.conf.
  2. Restart the cinder-volume service using the command `systemctl restart cinder-volume`.
  3. Follow the common steps, and all steps should pass.
  - Disable RBD flatten operations:
  1. Ensure that "enable_flatten_children_deletion = True" is not present in the cinder-ceph section of /etc/cinder/cinder.conf.
  2. Follow the common steps, and the process should fail at step 5 with an ImageBusy error.
  
  [Where problems could occur]
  The patch primarily modifies the workflow for volume deletion when using RBD as the backend and adds a retry mechanism for unprotecting snapshots during snapshot deletion.
  To prevent any performance regressions, we have also introduced a configuration option to enable the RBD flatten operations, which defaults to false.
  If the patch has any undiscovered issues, it will only affect volume deletion. Other functionalities or non-RBD backends will not be impacted.

** Changed in: cinder (Ubuntu Jammy)
       Status: In Progress => Incomplete

-- 
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to cinder in Ubuntu.
https://bugs.launchpad.net/bugs/1969643

Title:
  RBD: Unable to delete a volume which has snapshot/volume children

Status in Cinder:
  Fix Released
Status in cinder package in Ubuntu:
  Fix Released
Status in cinder source package in Jammy:
  Incomplete
Status in cinder source package in Mantic:
  Won't Fix
Status in cinder source package in Noble:
  Fix Released
Status in cinder source package in Oracular:
  Fix Released

Bug description:
  [Impact]
  Deleting a volume will fail if it has snapshot or volume children, resulting in an ImageBusy error.

  [Fix]
  Upstream has a patch that uses RBD flatten operations to break dependencies between volumes and snapshots, reducing failures when using RBD volume clones and snapshots.

  commit 1a675c9aa178c6d9c6ed10fd98f086c46d350d3f
  Author:     Eric Harney <eharney at redhat.com>
  CommitDate: Fri Dec 1 10:17:05 2023 -0500

      RBD: Flattening of child volumes during deletion

  [Test Plan]
  Here are the common steps for testing.
  1. Prepare an OpenStack environment with cinder-ceph
  2. Create a volume named "vol"
  openstack volume create --image jammy --size 10 vol
  3. Create a snapshot of the volume "vol"
  openstack volume snapshot create --volume vol vol-snap
  4. Create a volume named "vol-copy" from the snapshot
  openstack volume create --snapshot vol-snap vol-copy
  5. Delete the snapshot and then delete the volume "vol"
  openstack volume snapshot delete vol-snap
  openstack volume delete vol
  6. Confirm that the volume "vol" is successfully deleted
  or deletion failed (depending on the two scenarios below)
  openstack volume list

  There are two test scenarios:
  - Enable RBD flatten operations:
  1. Use `juju ssh` to log in to the cinder-volume and add "enable_flatten_children_deletion = True" in the cinder-ceph section of /etc/cinder/cinder.conf.
  2. Restart the cinder-volume service using the command `systemctl restart cinder-volume`.
  3. Follow the common steps, and all steps should pass.
  - Disable RBD flatten operations:
  1. Ensure that "enable_flatten_children_deletion = True" is not present in the cinder-ceph section of /etc/cinder/cinder.conf.
  2. Follow the common steps, and the process should fail at step 5 with an ImageBusy error.

  [Where problems could occur]
  The patch primarily modifies the workflow for volume deletion when using RBD as the backend and adds a retry mechanism for unprotecting snapshots during snapshot deletion.
  To prevent any performance regressions, we have also introduced a configuration option to enable the RBD flatten operations, which defaults to false.
  If the patch has any undiscovered issues, it will only affect volume deletion. Other functionalities or non-RBD backends will not be impacted.

To manage notifications about this bug go to:
https://bugs.launchpad.net/cinder/+bug/1969643/+subscriptions




More information about the Ubuntu-openstack-bugs mailing list