bootdevice: Refactor get_boot_devices_list
Move device name construction to a separate function. We will reuse this function in the following commit to pass logical CHS parameters through fw_cfg much like we currently pass bootindex. Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com> Signed-off-by: Sam Eiderman <sameid@google.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> Signed-off-by: John Snow <jsnow@redhat.com>
This commit is contained in:
parent
71f571a23d
commit
42f0680199
61
bootdevice.c
61
bootdevice.c
@ -202,6 +202,39 @@ DeviceState *get_boot_device(uint32_t position)
|
||||
return res;
|
||||
}
|
||||
|
||||
static char *get_boot_device_path(DeviceState *dev, bool ignore_suffixes,
|
||||
const char *suffix)
|
||||
{
|
||||
char *devpath = NULL, *s = NULL, *d, *bootpath;
|
||||
|
||||
if (dev) {
|
||||
devpath = qdev_get_fw_dev_path(dev);
|
||||
assert(devpath);
|
||||
}
|
||||
|
||||
if (!ignore_suffixes) {
|
||||
if (dev) {
|
||||
d = qdev_get_own_fw_dev_path_from_handler(dev->parent_bus, dev);
|
||||
if (d) {
|
||||
assert(!suffix);
|
||||
s = d;
|
||||
} else {
|
||||
s = g_strdup(suffix);
|
||||
}
|
||||
} else {
|
||||
s = g_strdup(suffix);
|
||||
}
|
||||
}
|
||||
|
||||
bootpath = g_strdup_printf("%s%s",
|
||||
devpath ? devpath : "",
|
||||
s ? s : "");
|
||||
g_free(devpath);
|
||||
g_free(s);
|
||||
|
||||
return bootpath;
|
||||
}
|
||||
|
||||
/*
|
||||
* This function returns null terminated string that consist of new line
|
||||
* separated device paths.
|
||||
@ -218,36 +251,10 @@ char *get_boot_devices_list(size_t *size)
|
||||
bool ignore_suffixes = mc->ignore_boot_device_suffixes;
|
||||
|
||||
QTAILQ_FOREACH(i, &fw_boot_order, link) {
|
||||
char *devpath = NULL, *suffix = NULL;
|
||||
char *bootpath;
|
||||
char *d;
|
||||
size_t len;
|
||||
|
||||
if (i->dev) {
|
||||
devpath = qdev_get_fw_dev_path(i->dev);
|
||||
assert(devpath);
|
||||
}
|
||||
|
||||
if (!ignore_suffixes) {
|
||||
if (i->dev) {
|
||||
d = qdev_get_own_fw_dev_path_from_handler(i->dev->parent_bus,
|
||||
i->dev);
|
||||
if (d) {
|
||||
assert(!i->suffix);
|
||||
suffix = d;
|
||||
} else {
|
||||
suffix = g_strdup(i->suffix);
|
||||
}
|
||||
} else {
|
||||
suffix = g_strdup(i->suffix);
|
||||
}
|
||||
}
|
||||
|
||||
bootpath = g_strdup_printf("%s%s",
|
||||
devpath ? devpath : "",
|
||||
suffix ? suffix : "");
|
||||
g_free(devpath);
|
||||
g_free(suffix);
|
||||
bootpath = get_boot_device_path(i->dev, ignore_suffixes, i->suffix);
|
||||
|
||||
if (total) {
|
||||
list[total-1] = '\n';
|
||||
|
Loading…
Reference in New Issue
Block a user