diff mbox series

vmdk: Support version=3 in VMDK descriptor files

Message ID 20190314141437.35517-1-shmuel.eiderman@oracle.com (mailing list archive)
State New, archived
Headers show
Series vmdk: Support version=3 in VMDK descriptor files | expand

Commit Message

Sam Eiderman March 14, 2019, 2:14 p.m. UTC
Commit 509d39aa22909c0ed1aabf896865f19c81fb38a1 added support for read
only VMDKs of version 3.

This commit fixes the probe function to correctly handle descriptors of
version 3.

This commit has two effects:
    1. We no longer need to supply '-f vmdk' when pointing to descriptor
       files of version 3 in qemu/qemu-img command line arguments.
    2. This fixes the scenario where a VMDK points to a parent version 3
       descriptor file which is being probed as "raw" instead of "vmdk".

Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com>
Reviewed-by: Mark Kanda <mark.kanda@oracle.com>
Signed-off-by: Shmuel Eiderman <shmuel.eiderman@oracle.com>
---
 block/vmdk.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Kevin Wolf March 14, 2019, 2:34 p.m. UTC | #1
Am 14.03.2019 um 15:14 hat Sam Eiderman geschrieben:
> Commit 509d39aa22909c0ed1aabf896865f19c81fb38a1 added support for read
> only VMDKs of version 3.
> 
> This commit fixes the probe function to correctly handle descriptors of
> version 3.
> 
> This commit has two effects:
>     1. We no longer need to supply '-f vmdk' when pointing to descriptor
>        files of version 3 in qemu/qemu-img command line arguments.
>     2. This fixes the scenario where a VMDK points to a parent version 3
>        descriptor file which is being probed as "raw" instead of "vmdk".
> 
> Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com>
> Reviewed-by: Mark Kanda <mark.kanda@oracle.com>
> Signed-off-by: Shmuel Eiderman <shmuel.eiderman@oracle.com>

Thanks, applied to the block branch.

Kevin
diff mbox series

Patch

diff --git a/block/vmdk.c b/block/vmdk.c
index d8c0c50390..8dec6ef767 100644
--- a/block/vmdk.c
+++ b/block/vmdk.c
@@ -195,13 +195,15 @@  static int vmdk_probe(const uint8_t *buf, int buf_size, const char *filename)
             }
             if (end - p >= strlen("version=X\n")) {
                 if (strncmp("version=1\n", p, strlen("version=1\n")) == 0 ||
-                    strncmp("version=2\n", p, strlen("version=2\n")) == 0) {
+                    strncmp("version=2\n", p, strlen("version=2\n")) == 0 ||
+                    strncmp("version=3\n", p, strlen("version=3\n")) == 0) {
                     return 100;
                 }
             }
             if (end - p >= strlen("version=X\r\n")) {
                 if (strncmp("version=1\r\n", p, strlen("version=1\r\n")) == 0 ||
-                    strncmp("version=2\r\n", p, strlen("version=2\r\n")) == 0) {
+                    strncmp("version=2\r\n", p, strlen("version=2\r\n")) == 0 ||
+                    strncmp("version=3\r\n", p, strlen("version=3\r\n")) == 0) {
                     return 100;
                 }
             }