提交 5f535a94 编写于 作者: M Max Reitz 提交者: Kevin Wolf

block: Make essential BlockDriver objects public

There are some block drivers which are essential to QEMU and may not be
removed: These are raw, file and qcow2 (as the default non-raw format).
Make their BlockDriver objects public so they can be directly referenced
throughout the block layer without needing to call bdrv_find_format()
and having to deal with an error at runtime, while the real problem
occurred during linking (where raw, file or qcow2 were not linked into
qemu).

Cc: qemu-stable@nongnu.org
Signed-off-by: NMax Reitz <mreitz@redhat.com>
Signed-off-by: NKevin Wolf <kwolf@redhat.com>
上级 b89689f5
...@@ -2847,7 +2847,7 @@ static QemuOptsList qcow2_create_opts = { ...@@ -2847,7 +2847,7 @@ static QemuOptsList qcow2_create_opts = {
} }
}; };
static BlockDriver bdrv_qcow2 = { BlockDriver bdrv_qcow2 = {
.format_name = "qcow2", .format_name = "qcow2",
.instance_size = sizeof(BDRVQcowState), .instance_size = sizeof(BDRVQcowState),
.bdrv_probe = qcow2_probe, .bdrv_probe = qcow2_probe,
......
...@@ -1684,7 +1684,7 @@ static QemuOptsList raw_create_opts = { ...@@ -1684,7 +1684,7 @@ static QemuOptsList raw_create_opts = {
} }
}; };
static BlockDriver bdrv_file = { BlockDriver bdrv_file = {
.format_name = "file", .format_name = "file",
.protocol_name = "file", .protocol_name = "file",
.instance_size = sizeof(BDRVRawState), .instance_size = sizeof(BDRVRawState),
......
...@@ -540,7 +540,7 @@ static QemuOptsList raw_create_opts = { ...@@ -540,7 +540,7 @@ static QemuOptsList raw_create_opts = {
} }
}; };
static BlockDriver bdrv_file = { BlockDriver bdrv_file = {
.format_name = "file", .format_name = "file",
.protocol_name = "file", .protocol_name = "file",
.instance_size = sizeof(BDRVRawState), .instance_size = sizeof(BDRVRawState),
......
...@@ -235,7 +235,7 @@ static int raw_probe(const uint8_t *buf, int buf_size, const char *filename) ...@@ -235,7 +235,7 @@ static int raw_probe(const uint8_t *buf, int buf_size, const char *filename)
return 1; return 1;
} }
static BlockDriver bdrv_raw = { BlockDriver bdrv_raw = {
.format_name = "raw", .format_name = "raw",
.bdrv_probe = &raw_probe, .bdrv_probe = &raw_probe,
.bdrv_reopen_prepare = &raw_reopen_prepare, .bdrv_reopen_prepare = &raw_reopen_prepare,
......
...@@ -414,6 +414,14 @@ struct BlockDriverState { ...@@ -414,6 +414,14 @@ struct BlockDriverState {
Error *backing_blocker; Error *backing_blocker;
}; };
/* Essential block drivers which must always be statically linked into qemu, and
* which therefore can be accessed without using bdrv_find_format() */
extern BlockDriver bdrv_file;
extern BlockDriver bdrv_raw;
extern BlockDriver bdrv_qcow2;
int get_tmp_filename(char *filename, int size); int get_tmp_filename(char *filename, int size);
BlockDriver *bdrv_probe_all(const uint8_t *buf, int buf_size, BlockDriver *bdrv_probe_all(const uint8_t *buf, int buf_size,
const char *filename); const char *filename);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册