diff -bur qemu-2.8.0-orig/block/vmdk.c qemu-2.8.0/block/vmdk.c --- qemu-2.8.0-orig/block/vmdk.c 2016-12-20 21:16:43.000000000 +0100 +++ qemu-2.8.0/block/vmdk.c 2017-03-31 16:54:45.839124664 +0200 @@ -1857,6 +1857,8 @@ char *adapter_type = NULL; char *backing_file = NULL; char *hw_version = NULL; + char *tools_version = NULL; + char *tools_version_header = NULL; char *fmt = NULL; int ret = 0; bool flat, split, compress; @@ -1889,10 +1891,13 @@ "#DDB\n" "\n" "ddb.virtualHWVersion = \"%s\"\n" + "%s" "ddb.geometry.cylinders = \"%" PRId64 "\"\n" "ddb.geometry.heads = \"%" PRIu32 "\"\n" "ddb.geometry.sectors = \"63\"\n" "ddb.adapterType = \"%s\"\n"; + const char tools_version_template[] = + "ddb.toolsVersion = \"%s\"\n"; ext_desc_lines = g_string_new(NULL); @@ -1920,6 +1925,14 @@ g_free(hw_version); hw_version = g_strdup("4"); } + tools_version = qemu_opt_get_del(opts, BLOCK_OPT_TOOLSVERSION); + if (strcmp(tools_version, "undefined") == 0) { + tools_version_header = g_strdup(""); + } else { + tools_version_header = g_strdup_printf(tools_version_template, + tools_version); + } + g_free(tools_version); fmt = qemu_opt_get_del(opts, BLOCK_OPT_SUBFMT); if (qemu_opt_get_bool_del(opts, BLOCK_OPT_ZEROED_GRAIN, false)) { zeroed_grain = true; @@ -2041,11 +2054,13 @@ parent_desc_line, ext_desc_lines->str, hw_version, + tools_version_header, total_size / (int64_t)(63 * number_heads * BDRV_SECTOR_SIZE), number_heads, adapter_type); desc_len = strlen(desc); + g_free(tools_version_header); /* the descriptor offset = 0x200 */ if (!split && !flat) { desc_offset = 0x200; @@ -2323,6 +2338,12 @@ .def_value_str = "undefined" }, { + .name = BLOCK_OPT_TOOLSVERSION, + .type = QEMU_OPT_STRING, + .help = "VMWare Tools version", + .def_value_str = "undefined" + }, + { .name = BLOCK_OPT_SUBFMT, .type = QEMU_OPT_STRING, .help = diff -bur qemu-2.8.0-orig/include/block/block_int.h qemu-2.8.0/include/block/block_int.h --- qemu-2.8.0-orig/include/block/block_int.h 2016-12-20 21:16:47.000000000 +0100 +++ qemu-2.8.0/include/block/block_int.h 2017-03-31 16:53:03.191125207 +0200 @@ -43,6 +43,7 @@ #define BLOCK_OPT_ENCRYPT "encryption" #define BLOCK_OPT_COMPAT6 "compat6" #define BLOCK_OPT_HWVERSION "hwversion" +#define BLOCK_OPT_TOOLSVERSION "vmtoolsversion" #define BLOCK_OPT_BACKING_FILE "backing_file" #define BLOCK_OPT_BACKING_FMT "backing_fmt" #define BLOCK_OPT_CLUSTER_SIZE "cluster_size"