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: Max Reitz <mreitz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
b89689f5b2
commit
5f535a941e
@ -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 = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
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 = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
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)
|
|||||||
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 {
|
|||||||
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);
|
||||||
|
Loading…
Reference in New Issue
Block a user