@@ -70,6 +70,7 @@ static BdrvProbeFunc *format_probes[] = {
bdrv_qcow2_probe,
bdrv_qed_probe,
bdrv_raw_probe,
+ bdrv_vdi_probe,
};
static QTAILQ_HEAD(, BlockDriverState) graph_bdrv_states =
@@ -3,24 +3,27 @@
#include "block/probe.h"
#include "vdi.h"
-int vdi_probe(const uint8_t *buf, int buf_size, const char *filename)
+const char *bdrv_vdi_probe(const uint8_t *buf, int buf_size,
+ const char *filename, int *score)
{
+ const char *format = "vdi";
const VdiHeader *header = (const VdiHeader *)buf;
- int ret = 0;
+ assert(score);
+ *score = 0;
logout("\n");
if (buf_size < sizeof(*header)) {
/* Header too small, no VDI. */
} else if (le32_to_cpu(header->signature) == VDI_SIGNATURE) {
- ret = 100;
+ *score = 100;
}
- if (ret == 0) {
+ if (*score == 0) {
logout("no vdi image\n");
} else {
logout("%s", header->text);
}
- return ret;
+ return format;
}
@@ -849,7 +849,6 @@ static QemuOptsList vdi_create_opts = {
static BlockDriver bdrv_vdi = {
.format_name = "vdi",
.instance_size = sizeof(BDRVVdiState),
- .bdrv_probe = vdi_probe,
.bdrv_open = vdi_open,
.bdrv_close = vdi_close,
.bdrv_reopen_prepare = vdi_reopen_prepare,
@@ -1,7 +1,6 @@
#ifndef PROBE_H
#define PROBE_H
-int vdi_probe(const uint8_t *buf, int buf_size, const char *filename);
int vhdx_probe(const uint8_t *buf, int buf_size, const char *filename);
int vmdk_probe(const uint8_t *buf, int buf_size, const char *filename);
int vpc_probe(const uint8_t *buf, int buf_size, const char *filename);
@@ -23,5 +22,7 @@ const char *bdrv_qed_probe(const uint8_t *buf, int buf_size,
const char *filename, int *score);
const char *bdrv_raw_probe(const uint8_t *buf, int buf_size,
const char *filename, int *score);
+const char *bdrv_vdi_probe(const uint8_t *buf, int buf_size,
+ const char *filename, int *score);
#endif