@@ -67,6 +67,7 @@ static BdrvProbeFunc *format_probes[] = {
bdrv_dmg_probe,
bdrv_parallels_probe,
bdrv_qcow_probe,
+ bdrv_qcow2_probe,
};
static QTAILQ_HEAD(, BlockDriverState) graph_bdrv_states =
@@ -3,14 +3,20 @@
#include "block/probe.h"
#include "qcow2.h"
-int qcow2_probe(const uint8_t *buf, int buf_size, const char *filename)
+const char *bdrv_qcow2_probe(const uint8_t *buf, int buf_size,
+ const char *filename, int *score)
{
+ const char *format = "qcow2";
const QCowHeader *cow_header = (const void *)buf;
+ assert(score);
if (buf_size >= sizeof(QCowHeader) &&
be32_to_cpu(cow_header->magic) == QCOW_MAGIC &&
- be32_to_cpu(cow_header->version) >= 2)
- return 100;
- else
- return 0;
+ be32_to_cpu(cow_header->version) >= 2) {
+ *score = 100;
+ return format;
+ }
+
+ *score = 0;
+ return format;
}
@@ -3382,7 +3382,6 @@ static QemuOptsList qcow2_create_opts = {
BlockDriver bdrv_qcow2 = {
.format_name = "qcow2",
.instance_size = sizeof(BDRVQcow2State),
- .bdrv_probe = qcow2_probe,
.bdrv_open = qcow2_open,
.bdrv_close = qcow2_close,
.bdrv_reopen_prepare = qcow2_reopen_prepare,
@@ -1,7 +1,6 @@
#ifndef PROBE_H
#define PROBE_H
-int qcow2_probe(const uint8_t *buf, int buf_size, const char *filename);
int bdrv_qed_probe(const uint8_t *buf, int buf_size, const char *filename);
int raw_probe(const uint8_t *buf, int buf_size, const char *filename);
int vdi_probe(const uint8_t *buf, int buf_size, const char *filename);
@@ -20,5 +19,7 @@ const char *bdrv_parallels_probe(const uint8_t *buf, int buf_size,
const char *filename, int *score);
const char *bdrv_qcow_probe(const uint8_t *buf, int buf_size,
const char *filename, int *score);
+const char *bdrv_qcow2_probe(const uint8_t *buf, int buf_size,
+ const char *filename, int *score);
#endif