From: "Daniel P. Berrange" <berrange@xxxxxxxxxx> 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@xxxxxxxxxx> --- src/util/storage_file.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/util/storage_file.c b/src/util/storage_file.c index 69a66ff..c0bb977 100644 --- a/src/util/storage_file.c +++ b/src/util/storage_file.c @@ -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,12 @@ virStorageFileMatchesVersion(int format, if (fileTypeInfo[format].versionOffset == -1) return false; + /* -2 == non-versioned file format, so trivially match */ + if (fileTypeInfo[format].versionOffset == -2) { + VIR_WARN("Non-versioned file matches"); + return true; + } + if ((fileTypeInfo[format].versionOffset + 4) > buflen) return false; -- 1.7.11.7 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list