vmdk: support vmfs files

VMware ESX hosts also use different create and extent types for flat
files, respectively "vmfs" and "VMFS".  This is not documented, but it
can be found at http://kb.vmware.com/kb/10002511 (Recreating a missing
virtual machine disk (VMDK) descriptor file).

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Fam Zheng <famz@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Paolo Bonzini 2013-08-19 18:54:28 +08:00 committed by Stefan Hajnoczi
parent daac8fdc68
commit 04d542c8b8

View File

@ -719,7 +719,7 @@ static int vmdk_parse_extents(const char *desc, BlockDriverState *bs,
if (sectors <= 0 || if (sectors <= 0 ||
(strcmp(type, "FLAT") && strcmp(type, "SPARSE") && (strcmp(type, "FLAT") && strcmp(type, "SPARSE") &&
strcmp(type, "VMFSSPARSE")) || strcmp(type, "VMFS") && strcmp(type, "VMFSSPARSE")) ||
(strcmp(access, "RW"))) { (strcmp(access, "RW"))) {
goto next_line; goto next_line;
} }
@ -732,7 +732,7 @@ static int vmdk_parse_extents(const char *desc, BlockDriverState *bs,
} }
/* save to extents array */ /* save to extents array */
if (!strcmp(type, "FLAT")) { if (!strcmp(type, "FLAT") || !strcmp(type, "VMFS")) {
/* FLAT extent */ /* FLAT extent */
VmdkExtent *extent; VmdkExtent *extent;
@ -790,6 +790,7 @@ static int vmdk_open_desc_file(BlockDriverState *bs, int flags,
goto exit; goto exit;
} }
if (strcmp(ct, "monolithicFlat") && if (strcmp(ct, "monolithicFlat") &&
strcmp(ct, "vmfs") &&
strcmp(ct, "vmfsSparse") && strcmp(ct, "vmfsSparse") &&
strcmp(ct, "twoGbMaxExtentSparse") && strcmp(ct, "twoGbMaxExtentSparse") &&
strcmp(ct, "twoGbMaxExtentFlat")) { strcmp(ct, "twoGbMaxExtentFlat")) {