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;
|
||||
|
||||
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 = {
|
||||
.name = "smp-opts",
|
||||
.implied_opt_name = "cpus",
|
||||
|
@ -4359,38 +4400,7 @@ int main(int argc, char **argv, char **envp)
|
|||
ram_mig_init();
|
||||
dirty_bitmap_mig_init();
|
||||
|
||||
/* 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);
|
||||
configure_blockdev(&bdo_queue, machine_class, snapshot);
|
||||
|
||||
qemu_opts_foreach(qemu_find_opts("mon"),
|
||||
mon_init_func, NULL, &error_fatal);
|
||||
|
|
Loading…
Reference in New Issue