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

Chengen Du 1969643 at bugs.launchpad.net
Thu Jul 4 02:43:21 UTC 2024


@mfo I apologize for the haste earlier and have now modified the test
plan.

** 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
- # ^ This would fail with ImageBusy previously (see patch's "For example")
  openstack volume delete vol
- # ^ This would possibly fail previously (see patch's step "4.")
  6. Confirm that the volume "vol" is successfully deleted
  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.
  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: Incomplete => In Progress

** 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
  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.

-- 
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:
  In Progress
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
  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