Bug 1281710

Summary: It's better support to delete snapshots for rbd volume
Product: Red Hat Enterprise Linux 7 Reporter: Yang Yang <yanyang>
Component: libvirtAssignee: John Ferlan <jferlan>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.2CC: dyuan, dzheng, jferlan, rbalakri
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Unspecified   
Whiteboard:
Fixed In Version: libvirt-1.3.1-1.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-11-03 18:30:43 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Yang Yang 2015-11-13 08:35:58 UTC
Description of problem:
Snapshot is supported for rbd image, but currently libvirt has
not concept of snapshot. Once snapshot is created outside libvirt
, libvirt can not delete this image any more. It's better to support
to delete snapshots for rbd volume at least.

Version-Release number of selected component (if applicable):
libvirt-1.2.17-13.el7.x86_64

How reproducible:
100%

Steps to Reproduce:
1. Create a rbd image
#rbd create rbd/rbd1.img --size 5120

2. Create a snapshot for the image
#rbd snap create rbd/rbd1.img@sn1

# rbd snap ls rbd/rbd1.img
SNAPID NAME    SIZE 
     2 sn1  5070 MB

3. Create a rbd pool
# cat rbd-pool.xml 
<pool type='rbd'>
  <name>rbd</name>
  <source>
    <host name='10.66.x.x' port='6789'/>
    <host name='10.66.x.x' port='6789'/>
    <name>rbd</name>
  </source>
</pool>

# virsh pool-define rbd-pool.xml 
Pool rbd defined from rbd-pool.xml

# virsh pool-start rbd
Pool rbd started

# virsh vol-list rbd
 Name                 Path                                    
------------------------------------------------------------------------------
 rbd1.img             rbd/rbd1.img                            
 yy2.img              rbd/yy2.img                             
 yy3.img              rbd/yy3.img  

4. delete volume - rbd1.img
# virsh vol-delete rbd1.img rbd
error: Failed to delete vol rbd1.img
error: failed to remove volume 'rbd/rbd1.img': Directory not empty

Actual results:
Libvirt cannot delete rbd snapshot

Expected results:
It's better to support to delete snapshots for rbd volume

Additional info:

Comment 2 Jaroslav Suchanek 2015-11-27 11:41:44 UTC
Might be already supported in API by?

commit 3c7590e0a435d833895fc7b5be489e53e223ad95
Author: Wido den Hollander <wido>
Date:   Tue Oct 27 15:16:34 2015 +0100

    rbd: Remove snapshots if the DELETE_WITH_SNAPSHOTS flag has been provided
    
    When a RBD volume has snapshots it can not be removed.
    
    This patch introduces a new flag to force volume removal,
    VIR_STORAGE_VOL_DELETE_WITH_SNAPSHOTS.
    
    With this flag any existing snapshots will be removed prior to
    removing the volume.
    
    No existing mechanism in libvirt allowed us to pass such information,
    so that's why a new flag was introduced.
    
    Signed-off-by: Wido den Hollander <wido>

Comment 3 John Ferlan 2015-12-02 21:33:24 UTC
Turns out the above commit was a "start", but not nearly complete enough for a general solution. It's one of those "hidden" options that one could pass a flag via the API, but it's not documented.

I'll use this bz to work through those issues.

Comment 4 John Ferlan 2015-12-02 23:20:46 UTC
Posted some patches upstream:

http://www.redhat.com/archives/libvir-list/2015-December/msg00087.html

In particular the third patch is the meat and potatoes of the patch

http://www.redhat.com/archives/libvir-list/2015-December/msg00090.html

Comment 5 John Ferlan 2015-12-18 15:55:25 UTC
Patches have been pushed:

$ git describe 2eba5c5635a041a0a3a736e917fa1495c97c132b
CVE-2015-5313-68-g2eba5c5
$

Comment 9 errata-xmlrpc 2016-11-03 18:30:43 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHSA-2016-2577.html