Bug 1134237

Summary: Opening malformed VMDK description file should fail
Product: Red Hat Enterprise Linux 7 Reporter: Fam Zheng <famz>
Component: qemu-kvmAssignee: Fam Zheng <famz>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.1CC: hhuang, huding, juzhang, mrezanin, rbalakri, sluo, tlavigne, virt-maint, xfu
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: qemu-kvm-1.5.3-84.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-03-05 08:11:18 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 Fam Zheng 2014-08-27 07:32:30 UTC
qemu-img currently accepts below description file:

--------------8<-------------------
# Disk DescriptorFile
version=1
CID=58ab4847
parentCID=ffffffff
createType="vmfs"

# Extent description
RW 12582912 VMFS "dummy.vmdk" 1


--------------8<-------------------
The line:

RW 12582912 VMFS "dummy.vmdk" 1

is malformed because field "1" is actually unexpected.

We should report and error and refuse to open this image.

Current output:

$ ~/build/rhel7/qemu-img info a.vmdk
image: a.vmdk
file format: vmdk
virtual size: 6.0G (6442450944 bytes)
disk size: 4.0K
Format specific information:
    cid: 1487620167
    parent cid: 4294967295
    create type: vmfs
    extents:
        [0]:
            virtual size: 6442450944
            filename: dummy.vmdk
            format: VMFS

Expected output:

$ qemu-img info a.vmdk
qemu-img: Could not open 'a.vmdk': Invalid extent lines:
RW 12582912 VMFS "dummy.vmdk" 1

Comment 4 Jeff Nelson 2014-12-16 23:40:35 UTC
Fix included in qemu-kvm-1.5.3-84.el7

Comment 6 Sibiao Luo 2014-12-24 08:15:03 UTC
Reprodue this issue on qemu-kvm-1.5.3-83.el7.x86_64.
host info:
# uname -r && rpm -q qemu-kvm
3.10.0-219.el7.x86_64
qemu-kvm-1.5.3-83.el7.x86_64

# qemu-img create -f vmdk -o subformat=monolithicFlat a.vmdk 6G
Formatting 'a.vmdk', fmt=vmdk size=6442450944 compat6=off subformat='monolithicFlat' zeroed_grain=off 
# cp a.vmdk a.vmdk.bk
# git diff a.vmdk.bk a.vmdk
diff --git a/a.vmdk.bk b/a.vmdk
index bdb95dd..3ccfb13 100644
--- a/a.vmdk.bk
+++ b/a.vmdk
@@ -2,10 +2,10 @@
 version=1
 CID=549a7595
 parentCID=ffffffff
-createType="monolithicFlat"
+createType="vmfs"
 
 # Extent description
-RW 12582912 FLAT "a-flat.vmdk" 0
+RW 12582912 VMFS "a-flat.vmdk" 1
 
 # The Disk Data Base
 #DDB
# qemu-img info a.vmdk
image: a.vmdk
file format: vmdk
virtual size: 6.0G (6442450944 bytes)
disk size: 4.0K
Format specific information:
    cid: 1419408789
    parent cid: 4294967295
    create type: vmfs
    extents:
        [0]:
            virtual size: 6442450944
            filename: a-flat.vmdk
            format: VMFS



Verify this issue on qemu-kvm-1.5.3-84.el7.x86_64 with monolithicFlat or twoGbMaxExtentSparse|twoGbMaxExtentFlat sub-format.

host info:
# uname -r && rpm -q qemu-kvm
3.10.0-219.el7.x86_64
qemu-kvm-1.5.3-84.el7.x86_64

############ for twoGbMaxExtentFlat:
# qemu-img create -f vmdk -o subformat=twoGbMaxExtentFlat a.vmdk 6G
# cp a.vmdk a.vmdk.bk
# git diff a.vmdk.bk a.vmdk
diff --git a/a.vmdk.bk b/a.vmdk
index d188636..ad286e2 100644
--- a/a.vmdk.bk
+++ b/a.vmdk
@@ -2,12 +2,12 @@
 version=1
 CID=549a735a
 parentCID=ffffffff
-createType="twoGbMaxExtentFlat"
+createType="vmfs"
 
 # Extent description
-RW 4194304 FLAT "a-f001.vmdk" 0
-RW 4194304 FLAT "a-f002.vmdk" 0
-RW 4194304 FLAT "a-f003.vmdk" 0
+RW 4194304 VMFS "a-f001.vmdk" 1
+RW 4194304 VMFS "a-f002.vmdk" 1
+RW 4194304 VMFS "a-f003.vmdk" 1
 
 # The Disk Data Base
 #DDB

# qemu-img info a.vmdk
qemu-img: Could not open 'a.vmdk': Invalid extent lines:
RW 4194304 VMFS "a-f001.vmdk" 1
RW 4194304 VMFS "a-f002.vmdk" 1
RW 4194304 VMFS "a-f003.vmdk" 1

# The Disk Data Base
#DDB

ddb.virtualHWVersion = "4"
ddb.geometry.cylinders = "12483"
ddb.geometry.heads = "16"
ddb.geometry.sectors = "63"
ddb.adapterType = "ide"

############ for twoGbMaxExtentSparse:
# qemu-img info a.vmdk
qemu-img: Could not open 'a.vmdk': Invalid extent lines:
RW 4194304 VMFS "a-s001.vmdk" 1
RW 4194304 VMFS "a-s002.vmdk" 1
RW 4194304 VMFS "a-s003.vmdk" 1

# The Disk Data Base
#DDB

ddb.virtualHWVersion = "4"
ddb.geometry.cylinders = "12483"
ddb.geometry.heads = "16"
ddb.geometry.sectors = "63"
ddb.adapterType = "ide"

############ for monolithicFlat:
# qemu-img info a.vmdk 
qemu-img: Could not open 'a.vmdk': Invalid extent lines:
RW 12582912 VMFS "a-flat.vmdk" 1

# The Disk Data Base
#DDB

ddb.virtualHWVersion = "4"
ddb.geometry.cylinders = "12483"
ddb.geometry.heads = "16"
ddb.geometry.sectors = "63"
ddb.adapterType = "ide"

Base on above, this issue has been fixed correctly, move to VERIFIED status.

Best Regards,
sluo

Comment 7 Sibiao Luo 2014-12-24 08:49:16 UTC
Tried the qemu-kvm-rhev-2.1.2-17.el7.x86_64 which did not hit this issue.

host info:
# uname -r && rpm -q qemu-kvm-rhev
3.10.0-219.el7.x86_64
qemu-kvm-rhev-2.1.2-17.el7.x86_64

# qemu-img info a.vmdk 
qemu-img: Could not open 'a.vmdk': Invalid extent lines:
RW 12582912 VMFS "a-flat.vmdk" 1

# The Disk Data Base
#DDB

ddb.virtualHWVersion = "4"
ddb.geometry.cylinders = "12483"
ddb.geometry.heads = "16"
ddb.geometry.sectors = "63"
ddb.adapterType = "ide"

Best Regards,
sluo

Comment 9 errata-xmlrpc 2015-03-05 08:11:18 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-2015-0349.html