diff mbox

block: Probe file for specified format

Message ID 1355571343-19878-1-git-send-email-sw@weilnetz.de
State Superseded
Headers show

Commit Message

Stefan Weil Dec. 15, 2012, 11:35 a.m. UTC
Probe for the file format if the file format was specified explicitly
and a probe function is available.

example: -drive file=myfile,format=qcow2

Then myfile is probed and must be in qcow2 format.

This fixes those bugs:

https://bugzilla.redhat.com/show_bug.cgi?id=556482
https://bugs.launchpad.net/qemu/+bug/1090600

Signed-off-by: Stefan Weil <sw@weilnetz.de>
---

This patch can also be used for the latest stable version of QEMU.

 blockdev.c |    7 +++++++
 1 file changed, 7 insertions(+)

Comments

Stefan Weil Dec. 15, 2012, 11:57 a.m. UTC | #1
Am 15.12.2012 12:35, schrieb Stefan Weil:
> Probe for the file format if the file format was specified explicitly
> and a probe function is available.
>
> example: -drive file=myfile,format=qcow2
>
> Then myfile is probed and must be in qcow2 format.
>
> This fixes those bugs:
>
> https://bugzilla.redhat.com/show_bug.cgi?id=556482
> https://bugs.launchpad.net/qemu/+bug/1090600
>
> Signed-off-by: Stefan Weil <sw@weilnetz.de>
> ---
>
> This patch can also be used for the latest stable version of QEMU.
>
>   blockdev.c |    7 +++++++
>   1 file changed, 7 insertions(+)
>
> diff --git a/blockdev.c b/blockdev.c
> index 9a05e57..5a4cd56 100644
> --- a/blockdev.c
> +++ b/blockdev.c
> @@ -411,6 +411,13 @@ DriveInfo *drive_init(QemuOpts *opts, BlockInterfaceType block_default_type)
>               error_report("'%s' invalid format", buf);
>               return NULL;
>           }
> +        if (file && drv->bdrv_probe) {
> +            uint8_t data[2048];
> +            if (drv->bdrv_probe(data, sizeof(data), file) == 0) {
> +                error_report("file '%s' not in '%s' format", file, buf);
> +                return NULL;
> +            }
> +        }
>       }
>   
>       /* disk I/O throttling */


Sorry, this patch was not tested enough. I'll send a v2.

- Stefan Weil
diff mbox

Patch

diff --git a/blockdev.c b/blockdev.c
index 9a05e57..5a4cd56 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -411,6 +411,13 @@  DriveInfo *drive_init(QemuOpts *opts, BlockInterfaceType block_default_type)
             error_report("'%s' invalid format", buf);
             return NULL;
         }
+        if (file && drv->bdrv_probe) {
+            uint8_t data[2048];
+            if (drv->bdrv_probe(data, sizeof(data), file) == 0) {
+                error_report("file '%s' not in '%s' format", file, buf);
+                return NULL;
+            }
+        }
     }
 
     /* disk I/O throttling */