mirror of https://github.com/xemu-project/xemu.git
vl: Factor configure_blockdev() out of main()
Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20190308131445.17502-7-armbru@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
651af51c08
commit
d11bf9bf0f
74
vl.c
74
vl.c
|
@ -1199,6 +1199,47 @@ typedef struct BlockdevOptionsQueueEntry {
|
||||||
|
|
||||||
typedef QSIMPLEQ_HEAD(, BlockdevOptionsQueueEntry) BlockdevOptionsQueue;
|
typedef QSIMPLEQ_HEAD(, BlockdevOptionsQueueEntry) BlockdevOptionsQueue;
|
||||||
|
|
||||||
|
static void configure_blockdev(BlockdevOptionsQueue *bdo_queue,
|
||||||
|
MachineClass *machine_class, int snapshot)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* If the currently selected machine wishes to override the
|
||||||
|
* units-per-bus property of its default HBA interface type, do so
|
||||||
|
* now.
|
||||||
|
*/
|
||||||
|
if (machine_class->units_per_default_bus) {
|
||||||
|
override_max_devs(machine_class->block_default_type,
|
||||||
|
machine_class->units_per_default_bus);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* open the virtual block devices */
|
||||||
|
while (!QSIMPLEQ_EMPTY(bdo_queue)) {
|
||||||
|
BlockdevOptionsQueueEntry *bdo = QSIMPLEQ_FIRST(bdo_queue);
|
||||||
|
|
||||||
|
QSIMPLEQ_REMOVE_HEAD(bdo_queue, entry);
|
||||||
|
loc_push_restore(&bdo->loc);
|
||||||
|
qmp_blockdev_add(bdo->bdo, &error_fatal);
|
||||||
|
loc_pop(&bdo->loc);
|
||||||
|
qapi_free_BlockdevOptions(bdo->bdo);
|
||||||
|
g_free(bdo);
|
||||||
|
}
|
||||||
|
if (snapshot || replay_mode != REPLAY_MODE_NONE) {
|
||||||
|
qemu_opts_foreach(qemu_find_opts("drive"), drive_enable_snapshot,
|
||||||
|
NULL, NULL);
|
||||||
|
}
|
||||||
|
if (qemu_opts_foreach(qemu_find_opts("drive"), drive_init_func,
|
||||||
|
&machine_class->block_default_type, &error_fatal)) {
|
||||||
|
/* We printed help */
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
default_drive(default_cdrom, snapshot, machine_class->block_default_type, 2,
|
||||||
|
CDROM_OPTS);
|
||||||
|
default_drive(default_floppy, snapshot, IF_FLOPPY, 0, FD_OPTS);
|
||||||
|
default_drive(default_sdcard, snapshot, IF_SD, 0, SD_OPTS);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
static QemuOptsList qemu_smp_opts = {
|
static QemuOptsList qemu_smp_opts = {
|
||||||
.name = "smp-opts",
|
.name = "smp-opts",
|
||||||
.implied_opt_name = "cpus",
|
.implied_opt_name = "cpus",
|
||||||
|
@ -4359,38 +4400,7 @@ int main(int argc, char **argv, char **envp)
|
||||||
ram_mig_init();
|
ram_mig_init();
|
||||||
dirty_bitmap_mig_init();
|
dirty_bitmap_mig_init();
|
||||||
|
|
||||||
/* If the currently selected machine wishes to override the units-per-bus
|
configure_blockdev(&bdo_queue, machine_class, snapshot);
|
||||||
* property of its default HBA interface type, do so now. */
|
|
||||||
if (machine_class->units_per_default_bus) {
|
|
||||||
override_max_devs(machine_class->block_default_type,
|
|
||||||
machine_class->units_per_default_bus);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* open the virtual block devices */
|
|
||||||
while (!QSIMPLEQ_EMPTY(&bdo_queue)) {
|
|
||||||
BlockdevOptionsQueueEntry *bdo = QSIMPLEQ_FIRST(&bdo_queue);
|
|
||||||
|
|
||||||
QSIMPLEQ_REMOVE_HEAD(&bdo_queue, entry);
|
|
||||||
loc_push_restore(&bdo->loc);
|
|
||||||
qmp_blockdev_add(bdo->bdo, &error_fatal);
|
|
||||||
loc_pop(&bdo->loc);
|
|
||||||
qapi_free_BlockdevOptions(bdo->bdo);
|
|
||||||
g_free(bdo);
|
|
||||||
}
|
|
||||||
if (snapshot || replay_mode != REPLAY_MODE_NONE) {
|
|
||||||
qemu_opts_foreach(qemu_find_opts("drive"), drive_enable_snapshot,
|
|
||||||
NULL, NULL);
|
|
||||||
}
|
|
||||||
if (qemu_opts_foreach(qemu_find_opts("drive"), drive_init_func,
|
|
||||||
&machine_class->block_default_type, &error_fatal)) {
|
|
||||||
/* We printed help */
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
default_drive(default_cdrom, snapshot, machine_class->block_default_type, 2,
|
|
||||||
CDROM_OPTS);
|
|
||||||
default_drive(default_floppy, snapshot, IF_FLOPPY, 0, FD_OPTS);
|
|
||||||
default_drive(default_sdcard, snapshot, IF_SD, 0, SD_OPTS);
|
|
||||||
|
|
||||||
qemu_opts_foreach(qemu_find_opts("mon"),
|
qemu_opts_foreach(qemu_find_opts("mon"),
|
||||||
mon_init_func, NULL, &error_fatal);
|
mon_init_func, NULL, &error_fatal);
|
||||||
|
|
Loading…
Reference in New Issue