[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 13/32] blockdev: Move vdi probe to its own file
From: |
Colin Lord |
Subject: |
[Qemu-devel] [PATCH v4 13/32] blockdev: Move vdi probe to its own file |
Date: |
Thu, 14 Jul 2016 15:03:09 -0400 |
Isolates vdi probe as part of the modularization process.
Signed-off-by: Colin Lord <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
---
block/Makefile.objs | 2 +-
block/vdi-probe.c | 26 +++++++++++++++++++
block/vdi.c | 69 ++-------------------------------------------------
block/vdi.h | 49 ++++++++++++++++++++++++++++++++++++
include/block/probe.h | 1 +
5 files changed, 79 insertions(+), 68 deletions(-)
create mode 100644 block/vdi-probe.c
create mode 100644 block/vdi.h
diff --git a/block/Makefile.objs b/block/Makefile.objs
index 07b0a2d..9f9e83f 100644
--- a/block/Makefile.objs
+++ b/block/Makefile.objs
@@ -26,7 +26,7 @@ block-obj-y += write-threshold.o
block-obj-y += crypto.o
block-obj-y += bochs-probe.o cloop-probe.o crypto-probe.o dmg-probe.o
block-obj-y += parallels-probe.o qcow-probe.o qcow2-probe.o qed-probe.o
-block-obj-y += raw-probe.o
+block-obj-y += raw-probe.o vdi-probe.o
common-obj-y += stream.o
common-obj-y += backup.o
diff --git a/block/vdi-probe.c b/block/vdi-probe.c
new file mode 100644
index 0000000..42b2cc8
--- /dev/null
+++ b/block/vdi-probe.c
@@ -0,0 +1,26 @@
+#include "qemu/osdep.h"
+#include "block/block_int.h"
+#include "block/probe.h"
+#include "vdi.h"
+
+int vdi_probe(const uint8_t *buf, int buf_size, const char *filename)
+{
+ const VdiHeader *header = (const VdiHeader *)buf;
+ int ret = 0;
+
+ logout("\n");
+
+ if (buf_size < sizeof(*header)) {
+ /* Header too small, no VDI. */
+ } else if (le32_to_cpu(header->signature) == VDI_SIGNATURE) {
+ ret = 100;
+ }
+
+ if (ret == 0) {
+ logout("no vdi image\n");
+ } else {
+ logout("%s", header->text);
+ }
+
+ return ret;
+}
diff --git a/block/vdi.c b/block/vdi.c
index 8a1cf97..b6db1c6 100644
--- a/block/vdi.c
+++ b/block/vdi.c
@@ -52,6 +52,8 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
#include "block/block_int.h"
+#include "block/probe.h"
+#include "vdi.h"
#include "sysemu/block-backend.h"
#include "qemu/module.h"
#include "qemu/bswap.h"
@@ -59,14 +61,6 @@
#include "qemu/coroutine.h"
#include "qemu/cutils.h"
-#if defined(CONFIG_UUID)
-#include <uuid/uuid.h>
-#else
-/* TODO: move uuid emulation to some central place in QEMU. */
-#include "sysemu/sysemu.h" /* UUID_FMT */
-typedef unsigned char uuid_t[16];
-#endif
-
/* Code configuration options. */
/* Enable debug messages. */
@@ -92,16 +86,6 @@ typedef unsigned char uuid_t[16];
#define SECTOR_SIZE 512
#define DEFAULT_CLUSTER_SIZE (1 * MiB)
-#if defined(CONFIG_VDI_DEBUG)
-#define logout(fmt, ...) \
- fprintf(stderr, "vdi\t%-24s" fmt, __func__, ##__VA_ARGS__)
-#else
-#define logout(fmt, ...) ((void)0)
-#endif
-
-/* Image signature. */
-#define VDI_SIGNATURE 0xbeda107f
-
/* Image version. */
#define VDI_VERSION_1_1 0x00010001
@@ -163,33 +147,6 @@ static inline void uuid_unparse(const uuid_t uu, char *out)
#endif
typedef struct {
- char text[0x40];
- uint32_t signature;
- uint32_t version;
- uint32_t header_size;
- uint32_t image_type;
- uint32_t image_flags;
- char description[256];
- uint32_t offset_bmap;
- uint32_t offset_data;
- uint32_t cylinders; /* disk geometry, unused here */
- uint32_t heads; /* disk geometry, unused here */
- uint32_t sectors; /* disk geometry, unused here */
- uint32_t sector_size;
- uint32_t unused1;
- uint64_t disk_size;
- uint32_t block_size;
- uint32_t block_extra; /* unused here */
- uint32_t blocks_in_image;
- uint32_t blocks_allocated;
- uuid_t uuid_image;
- uuid_t uuid_last_snap;
- uuid_t uuid_link;
- uuid_t uuid_parent;
- uint64_t unused2[7];
-} QEMU_PACKED VdiHeader;
-
-typedef struct {
/* The block map entries are little endian (even in memory). */
uint32_t *bmap;
/* Size of block (bytes). */
@@ -371,28 +328,6 @@ static int vdi_make_empty(BlockDriverState *bs)
return 0;
}
-static int vdi_probe(const uint8_t *buf, int buf_size, const char *filename)
-{
- const VdiHeader *header = (const VdiHeader *)buf;
- int ret = 0;
-
- logout("\n");
-
- if (buf_size < sizeof(*header)) {
- /* Header too small, no VDI. */
- } else if (le32_to_cpu(header->signature) == VDI_SIGNATURE) {
- ret = 100;
- }
-
- if (ret == 0) {
- logout("no vdi image\n");
- } else {
- logout("%s", header->text);
- }
-
- return ret;
-}
-
static int vdi_open(BlockDriverState *bs, QDict *options, int flags,
Error **errp)
{
diff --git a/block/vdi.h b/block/vdi.h
new file mode 100644
index 0000000..4020c94
--- /dev/null
+++ b/block/vdi.h
@@ -0,0 +1,49 @@
+#ifndef VDI_H
+#define VDI_H
+
+#if defined(CONFIG_UUID)
+#include <uuid/uuid.h>
+#else
+/* TODO: move uuid emulation to some central place in QEMU. */
+#include "sysemu/sysemu.h" /* UUID_FMT */
+typedef unsigned char uuid_t[16];
+#endif
+
+#if defined(CONFIG_VDI_DEBUG)
+#define logout(fmt, ...) \
+ fprintf(stderr, "vdi\t%-24s" fmt, __func__, ##__VA_ARGS__)
+#else
+#define logout(fmt, ...) ((void)0)
+#endif
+
+/* Image signature. */
+#define VDI_SIGNATURE 0xbeda107f
+
+typedef struct {
+ char text[0x40];
+ uint32_t signature;
+ uint32_t version;
+ uint32_t header_size;
+ uint32_t image_type;
+ uint32_t image_flags;
+ char description[256];
+ uint32_t offset_bmap;
+ uint32_t offset_data;
+ uint32_t cylinders; /* disk geometry, unused here */
+ uint32_t heads; /* disk geometry, unused here */
+ uint32_t sectors; /* disk geometry, unused here */
+ uint32_t sector_size;
+ uint32_t unused1;
+ uint64_t disk_size;
+ uint32_t block_size;
+ uint32_t block_extra; /* unused here */
+ uint32_t blocks_in_image;
+ uint32_t blocks_allocated;
+ uuid_t uuid_image;
+ uuid_t uuid_last_snap;
+ uuid_t uuid_link;
+ uuid_t uuid_parent;
+ uint64_t unused2[7];
+} QEMU_PACKED VdiHeader;
+
+#endif
diff --git a/include/block/probe.h b/include/block/probe.h
index 053f961..f85c178 100644
--- a/include/block/probe.h
+++ b/include/block/probe.h
@@ -11,5 +11,6 @@ int qcow_probe(const uint8_t *buf, int buf_size, const char
*filename);
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);
#endif
--
2.5.5
- [Qemu-devel] [PATCH v4 02/32] blockdev: Add dynamic generation of module_block.h, (continued)
- [Qemu-devel] [PATCH v4 02/32] blockdev: Add dynamic generation of module_block.h, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 03/32] blockdev: Add dynamic module loading for block drivers, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 08/32] blockdev: Move parallels probe to its own file, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 05/32] blockdev: Move cloop probe to its own file, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 04/32] blockdev: Move bochs probe into separate file, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 07/32] blockdev: Move dmg probe to its own file, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 11/32] blockdev: Move qed probe to its own file, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 10/32] blockdev: Move qcow2 probe to its own file, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 09/32] blockdev: Move qcow probe to its own file, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 12/32] blockdev: Move raw probe to its own file, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 13/32] blockdev: Move vdi probe to its own file,
Colin Lord <=
- [Qemu-devel] [PATCH v4 24/32] blockdev: Separate qed probe from its driver, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 25/32] blockdev: Separate raw probe from its driver, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 17/32] blockdev: Separate bochs probe from its driver, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 19/32] blockdev: Separate luks probe from its driver, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 26/32] blockdev: Separate vdi probe from its driver, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 21/32] blockdev: Separate parallels probe from its driver, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 14/32] blockdev: Move vhdx probe to its own file, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 16/32] blockdev: Move vpc probe to its own file, Colin Lord, 2016/07/14