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;
|
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
|
* This function returns null terminated string that consist of new line
|
||||||
* separated device paths.
|
* separated device paths.
|
||||||
@ -218,36 +251,10 @@ char *get_boot_devices_list(size_t *size)
|
|||||||
bool ignore_suffixes = mc->ignore_boot_device_suffixes;
|
bool ignore_suffixes = mc->ignore_boot_device_suffixes;
|
||||||
|
|
||||||
QTAILQ_FOREACH(i, &fw_boot_order, link) {
|
QTAILQ_FOREACH(i, &fw_boot_order, link) {
|
||||||
char *devpath = NULL, *suffix = NULL;
|
|
||||||
char *bootpath;
|
char *bootpath;
|
||||||
char *d;
|
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
if (i->dev) {
|
bootpath = get_boot_device_path(i->dev, ignore_suffixes, i->suffix);
|
||||||
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);
|
|
||||||
|
|
||||||
if (total) {
|
if (total) {
|
||||||
list[total-1] = '\n';
|
list[total-1] = '\n';
|
||||||
|
Loading…
Reference in New Issue
Block a user