Bug 1270709 - Volume's allocation should be updated automatically while doing virsh vol-wipe
Volume's allocation should be updated automatically while doing virsh vol-wipe
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: libvirt (Show other bugs)
7.2
x86_64 Linux
unspecified Severity medium
: rc
: ---
Assigned To: John Ferlan
Virtualization Bugs
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2015-10-12 04:43 EDT by yafu
Modified: 2017-03-29 20:03 EDT (History)
7 users (show)

See Also:
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 14:25:53 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description yafu 2015-10-12 04:43:15 EDT
Description of problem:
 Volume's allocation should be updated automatically while doing virsh vol-wipe

Version-Release number of selected component (if applicable):
 kernel-3.10.0-322.x86_64.rpm
 qemu-kvm-rhev-2.3.0-29.el7.x86_64
 libvirt-daemon-1.2.17-13.el7.x86_64

How reproducible:
100%

Steps to Reproduce:
1. Create a vol,which format is raw:
   #virsh vol-create-as --pool default --capacity 200M --allocation 100M --format raw test.img
2. Make sure the vol info is correct:
    #virsh vol-info --pool default test.img
    Name:           test.img
    Type:           file
    Capacity:       200.00 MiB
    Allocation:     100.00 MiB
3. wipe the vol:
   #virsh vol-wipe --pool default test.img
4. Check the size of file test.img
   #du -h /var/lib/libvirt/images/test.img
    0        /var/lib/libvirt/images/test.img
5. resize the vol:
   #virsh vol-resize --pool default test.img --shrink 50M
   error: Failed to change size of volume 'test.img' to 50M

   error: invalid argument: can't shrink capacity below existing allocation

Actual results:
After step 5, 'virsh vol-resize --shrink' failed with error message:
" error: Failed to change size of volume 'test.img' to 50M

  error: invalid argument: can't shrink capacity below existing allocation"

The error shows the volume's allocation is not updated automatically while doing 'virsh vol-wipe'.

Expected results:
After step5, 'virsh vol-resize --shrink' should be executed correctly.

Additional info:
Excute 'virsh vol-info --pool default test.img' before step 5,'virsh vol-resize --shrink' will be executed correctly.
Comment 2 John Ferlan 2015-12-02 15:25:41 EST
Running a 'virsh vol-info' or 'virsh vol-list default --details' after the 'virsh vol-wipe' would 'reset' the internal view of the volume allocation.

In any case, I've generated a patch upstream in order to refresh the volume (if there is a refreshVol backend API) after the wipe volume is successful. See:

http://www.redhat.com/archives/libvir-list/2015-December/msg00085.html
Comment 3 John Ferlan 2015-12-17 07:39:48 EST
Initial patch review resulted in generation of a v2:

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

which included some doc adjustments. After a bit of back and forth - the doc adjustments were removed.

Patch has been pushed:

$ git describe 80ca86e54d101508ba6f3c5affc420d946810331
CVE-2015-5313-36-g80ca86e
$
Comment 5 yisun 2016-02-23 23:45:44 EST
version:libvirt-1.3.1-1.el7.x86_64

Verified and PASSED.

steps:
1. # virsh vol-create-as --pool default --capacity 200M --allocation 100M --format raw test.img
Vol test.img created

2. # virsh vol-info test.img default 
Name:           test.img
Type:           file
Capacity:       200.00 MiB
Allocation:     100.00 MiB

3. # virsh vol-resize --pool default test.img --shrink 50M
error: Failed to change size of volume 'test.img' to 50M

error: invalid argument: can't shrink capacity below existing allocation

4. # virsh vol-wipe --pool default test.img
Vol test.img wiped

5. # virsh vol-resize --pool default test.img --shrink 50M
Size of volume 'test.img' successfully changed to 50M

6. # qemu-img info /var/lib/libvirt/images/test.img 
image: /var/lib/libvirt/images/test.img
file format: raw
virtual size: 50M (52428800 bytes)
disk size: 0

7. # virsh vol-info test.img default 
Name:           test.img
Type:           file
Capacity:       50.00 MiB
Allocation:     0.00 B
Comment 7 errata-xmlrpc 2016-11-03 14:25:53 EDT
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

Note You need to log in before you can comment on or make changes to this bug.