On 10/16/19 6:41 PM, Sam Eiderman wrote:
From: Sam Eiderman shmuel.eiderman@oracle.com
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
bootdevice.c | 61 +++++++++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 27 deletions(-)
diff --git a/bootdevice.c b/bootdevice.c index bc5e1c2de4..2cf6b37c57 100644 --- a/bootdevice.c +++ b/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';
Tested-by: Philippe Mathieu-Daudé philmd@redhat.com