]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
Fix probing of QED file format
authorDaniel P. Berrange <berrange@redhat.com>
Thu, 13 Dec 2012 14:25:10 +0000 (14:25 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Thu, 13 Dec 2012 15:01:38 +0000 (15:01 +0000)
The QED file format is non-versioned, so although the magic
value matched, libvirt rejected it due to lack of a version
number to compare against. We need to distinguish this case
by allowing a value of '-2' to indicate a non-versioned file
where only the magic is required to match

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
src/util/storage_file.c

index deb79e9b6a265652cb2e152a9a61682d4f754c6d..83a05b3929fbd7c6d627dabac44f952a931bdad4 100644 (file)
@@ -174,8 +174,8 @@ static struct FileTypeInfo const fileTypeInfo[] = {
     },
     [VIR_STORAGE_FILE_QED] = {
         /* http://wiki.qemu.org/Features/QED */
-        "QED\0", NULL,
-        LV_LITTLE_ENDIAN, -1, -1,
+        "QED", NULL,
+        LV_LITTLE_ENDIAN, -2, -1,
         QED_HDR_IMAGE_SIZE, 8, 1, -1, qedGetBackingStore,
     },
     [VIR_STORAGE_FILE_VMDK] = {
@@ -612,6 +612,10 @@ virStorageFileMatchesVersion(int format,
     if (fileTypeInfo[format].versionOffset == -1)
         return false;
 
+    /* -2 == non-versioned file format, so trivially match */
+    if (fileTypeInfo[format].versionOffset == -2)
+        return true;
+
     if ((fileTypeInfo[format].versionOffset + 4) > buflen)
         return false;