[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH v4 09/32] blockdev: Move qcow probe to its own file
From: |
Colin Lord |
Subject: |
[Qemu-block] [PATCH v4 09/32] blockdev: Move qcow probe to its own file |
Date: |
Thu, 14 Jul 2016 15:03:05 -0400 |
Isolates qcow 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/qcow-probe.c | 16 ++++++++++++++++
block/qcow.c | 31 ++-----------------------------
block/qcow.h | 21 +++++++++++++++++++++
include/block/probe.h | 1 +
5 files changed, 41 insertions(+), 30 deletions(-)
create mode 100644 block/qcow-probe.c
create mode 100644 block/qcow.h
diff --git a/block/Makefile.objs b/block/Makefile.objs
index 43724ec..01b2e4e 100644
--- a/block/Makefile.objs
+++ b/block/Makefile.objs
@@ -25,7 +25,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
+block-obj-y += parallels-probe.o qcow-probe.o
common-obj-y += stream.o
common-obj-y += backup.o
diff --git a/block/qcow-probe.c b/block/qcow-probe.c
new file mode 100644
index 0000000..c5fd214
--- /dev/null
+++ b/block/qcow-probe.c
@@ -0,0 +1,16 @@
+#include "qemu/osdep.h"
+#include "block/block_int.h"
+#include "block/probe.h"
+#include "qcow.h"
+
+int qcow_probe(const uint8_t *buf, int buf_size, const char *filename)
+{
+ const QCowHeader *cow_header = (const void *)buf;
+
+ if (buf_size >= sizeof(QCowHeader) &&
+ be32_to_cpu(cow_header->magic) == QCOW_MAGIC &&
+ be32_to_cpu(cow_header->version) == QCOW_VERSION)
+ return 100;
+ else
+ return 0;
+}
diff --git a/block/qcow.c b/block/qcow.c
index ac849bd..6ea1164 100644
--- a/block/qcow.c
+++ b/block/qcow.c
@@ -26,6 +26,8 @@
#include "qemu-common.h"
#include "qemu/error-report.h"
#include "block/block_int.h"
+#include "block/probe.h"
+#include "qcow.h"
#include "sysemu/block-backend.h"
#include "qemu/module.h"
#include "qemu/bswap.h"
@@ -37,28 +39,11 @@
/**************************************************************/
/* QEMU COW block driver with compression and encryption support */
-#define QCOW_MAGIC (('Q' << 24) | ('F' << 16) | ('I' << 8) | 0xfb)
-#define QCOW_VERSION 1
-
#define QCOW_CRYPT_NONE 0
#define QCOW_CRYPT_AES 1
#define QCOW_OFLAG_COMPRESSED (1LL << 63)
-typedef struct QCowHeader {
- uint32_t magic;
- uint32_t version;
- uint64_t backing_file_offset;
- uint32_t backing_file_size;
- uint32_t mtime;
- uint64_t size; /* in bytes */
- uint8_t cluster_bits;
- uint8_t l2_bits;
- uint16_t padding;
- uint32_t crypt_method;
- uint64_t l1_table_offset;
-} QEMU_PACKED QCowHeader;
-
#define L2_CACHE_SIZE 16
typedef struct BDRVQcowState {
@@ -85,18 +70,6 @@ typedef struct BDRVQcowState {
static int decompress_cluster(BlockDriverState *bs, uint64_t cluster_offset);
-static int qcow_probe(const uint8_t *buf, int buf_size, const char *filename)
-{
- const QCowHeader *cow_header = (const void *)buf;
-
- if (buf_size >= sizeof(QCowHeader) &&
- be32_to_cpu(cow_header->magic) == QCOW_MAGIC &&
- be32_to_cpu(cow_header->version) == QCOW_VERSION)
- return 100;
- else
- return 0;
-}
-
static int qcow_open(BlockDriverState *bs, QDict *options, int flags,
Error **errp)
{
diff --git a/block/qcow.h b/block/qcow.h
new file mode 100644
index 0000000..c96ea24
--- /dev/null
+++ b/block/qcow.h
@@ -0,0 +1,21 @@
+#ifndef QCOW_H
+#define QCOW_H
+
+#define QCOW_MAGIC (('Q' << 24) | ('F' << 16) | ('I' << 8) | 0xfb)
+#define QCOW_VERSION 1
+
+typedef struct QCowHeader {
+ uint32_t magic;
+ uint32_t version;
+ uint64_t backing_file_offset;
+ uint32_t backing_file_size;
+ uint32_t mtime;
+ uint64_t size; /* in bytes */
+ uint8_t cluster_bits;
+ uint8_t l2_bits;
+ uint16_t padding;
+ uint32_t crypt_method;
+ uint64_t l1_table_offset;
+} QEMU_PACKED QCowHeader;
+
+#endif
diff --git a/include/block/probe.h b/include/block/probe.h
index f8b0984..5230da4 100644
--- a/include/block/probe.h
+++ b/include/block/probe.h
@@ -7,5 +7,6 @@ int block_crypto_probe_luks(const uint8_t *buf, int buf_size,
const char *filename);
int dmg_probe(const uint8_t *buf, int buf_size, const char *filename);
int parallels_probe(const uint8_t *buf, int buf_size, const char *filename);
+int qcow_probe(const uint8_t *buf, int buf_size, const char *filename);
#endif
--
2.5.5
- [Qemu-block] [PATCH v4 00/32] Dynamic module loading for block drivers, Colin Lord, 2016/07/14
- [Qemu-block] [PATCH v4 01/32] blockdev: prepare iSCSI block driver for dynamic loading, Colin Lord, 2016/07/14
- [Qemu-block] [PATCH v4 05/32] blockdev: Move cloop probe to its own file, Colin Lord, 2016/07/14
- [Qemu-block] [PATCH v4 03/32] blockdev: Add dynamic module loading for block drivers, Colin Lord, 2016/07/14
- [Qemu-block] [PATCH v4 04/32] blockdev: Move bochs probe into separate file, Colin Lord, 2016/07/14
- [Qemu-block] [PATCH v4 02/32] blockdev: Add dynamic generation of module_block.h, Colin Lord, 2016/07/14
- [Qemu-block] [PATCH v4 06/32] blockdev: Move luks probe to its own file, Colin Lord, 2016/07/14
- [Qemu-block] [PATCH v4 08/32] blockdev: Move parallels probe to its own file, Colin Lord, 2016/07/14
- [Qemu-block] [PATCH v4 07/32] blockdev: Move dmg probe to its own file, Colin Lord, 2016/07/14
- [Qemu-block] [PATCH v4 10/32] blockdev: Move qcow2 probe to its own file, Colin Lord, 2016/07/14
- [Qemu-block] [PATCH v4 09/32] blockdev: Move qcow probe to its own file,
Colin Lord <=
- [Qemu-block] [PATCH v4 13/32] blockdev: Move vdi probe to its own file, Colin Lord, 2016/07/14
- [Qemu-block] [PATCH v4 11/32] blockdev: Move qed probe to its own file, Colin Lord, 2016/07/14
- [Qemu-block] [PATCH v4 14/32] blockdev: Move vhdx probe to its own file, Colin Lord, 2016/07/14
- [Qemu-block] [PATCH v4 20/32] blockdev: Separate dmg probe from its driver, Colin Lord, 2016/07/14
- [Qemu-block] [PATCH v4 12/32] blockdev: Move raw probe to its own file, Colin Lord, 2016/07/14
- [Qemu-block] [PATCH v4 17/32] blockdev: Separate bochs probe from its driver, Colin Lord, 2016/07/14
- [Qemu-block] [PATCH v4 15/32] blockdev: Move vmdk probe to its own file, Colin Lord, 2016/07/14
- [Qemu-block] [PATCH v4 19/32] blockdev: Separate luks probe from its driver, Colin Lord, 2016/07/14