All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>, qemu-devel@nongnu.org
Cc: "Kevin Wolf" <kwolf@redhat.com>, "Fam Zheng" <fam@euphon.net>,
	"Thomas Huth" <thuth@redhat.com>,
	qemu-block@nongnu.org, "Michael S. Tsirkin" <mst@redhat.com>,
	libvir-list@redhat.com,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	"Arbel Moshe" <arbel.moshe@oracle.com>,
	"Laszlo Ersek" <lersek@redhat.com>,
	"Gonglei (Arei)" <arei.gonglei@huawei.com>,
	"Sam Eiderman" <shmuel.eiderman@oracle.com>,
	"Gerd Hoffmann" <kraxel@redhat.com>,
	"Stefan Hajnoczi" <stefanha@redhat.com>,
	"Laurent Vivier" <lvivier@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Sam Eiderman" <sameid@google.com>,
	"Max Reitz" <mreitz@redhat.com>, "John Snow" <jsnow@redhat.com>,
	"Karl Heubaum" <karl.heubaum@oracle.com>
Subject: [PULL 7/9] bootdevice: Refactor get_boot_devices_list
Date: Thu, 31 Oct 2019 06:59:02 -0400	[thread overview]
Message-ID: <20191031105904.12194-8-jsnow@redhat.com> (raw)
In-Reply-To: <20191031105904.12194-1-jsnow@redhat.com>

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>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.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';
-- 
2.21.0



  parent reply	other threads:[~2019-10-31 11:11 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-31 10:58 [PULL 0/9] Ide patches John Snow
2019-10-31 10:58 ` [PULL 1/9] IDE: deprecate ide-drive John Snow
2019-10-31 22:02   ` Paolo Bonzini
2019-11-01  5:40     ` Markus Armbruster
2019-11-01  7:12       ` Paolo Bonzini
2019-11-01 10:11     ` [libvirt] " Peter Krempa
2019-10-31 10:58 ` [PULL 2/9] block: Refactor macros - fix tabbing John Snow
2019-10-31 10:58 ` [PULL 3/9] block: Support providing LCHS from user John Snow
2019-10-31 10:58 ` [PULL 4/9] bootdevice: Add interface to gather LCHS John Snow
2019-10-31 10:59 ` [PULL 5/9] scsi: Propagate unrealize() callback to scsi-hd John Snow
2019-10-31 10:59 ` [PULL 6/9] bootdevice: Gather LCHS from all relevant devices John Snow
2019-10-31 10:59 ` John Snow [this message]
2019-10-31 10:59 ` [PULL 8/9] bootdevice: FW_CFG interface for LCHS values John Snow
2019-10-31 10:59 ` [PULL 9/9] hd-geo-test: Add tests for lchs override John Snow
2019-10-31 14:04 ` [libvirt] [PULL 0/9] Ide patches no-reply
2019-10-31 15:02 ` Peter Maydell
2019-10-31 15:45   ` John Snow
2019-10-31 15:54   ` git-publish, --pull-request and --signoff (was: Re: [PULL 0/9] Ide patches) John Snow
2019-11-05 19:38     ` Eduardo Habkost
2019-11-05 20:17     ` Stefan Hajnoczi
2019-11-05 20:22       ` Eduardo Habkost
2019-11-06  6:16         ` Stefan Hajnoczi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191031105904.12194-8-jsnow@redhat.com \
    --to=jsnow@redhat.com \
    --cc=arbel.moshe@oracle.com \
    --cc=arei.gonglei@huawei.com \
    --cc=fam@euphon.net \
    --cc=karl.heubaum@oracle.com \
    --cc=kraxel@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=lersek@redhat.com \
    --cc=libvir-list@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=sameid@google.com \
    --cc=shmuel.eiderman@oracle.com \
    --cc=stefanha@redhat.com \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.