All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	"Juan Quintela" <quintela@redhat.com>,
	"Jason Wang" <jasowang@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>
Subject: [PULL 30/66] failover: should_be_hidden() should take a bool
Date: Tue, 8 Dec 2020 14:35:15 -0500	[thread overview]
Message-ID: <20201208193307.646726-31-mst@redhat.com> (raw)
In-Reply-To: <20201208193307.646726-1-mst@redhat.com>

From: Juan Quintela <quintela@redhat.com>

We didn't use at all the -1 value, and we don't really care.  It was
only used for the cases when this is not the device that we are
searching for.  And in that case we should not hide the device.

Once there, simplify virtio-Snet_primary_should_be_hidden.

Signed-off-by: Juan Quintela <quintela@redhat.com>
Message-Id: <20201118083748.1328-16-quintela@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 include/hw/qdev-core.h |  2 +-
 hw/core/qdev.c         | 19 +++++--------------
 hw/net/virtio-net.c    | 27 +++++++--------------------
 3 files changed, 13 insertions(+), 35 deletions(-)

diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
index 5e737195b5..250f4edef6 100644
--- a/include/hw/qdev-core.h
+++ b/include/hw/qdev-core.h
@@ -200,7 +200,7 @@ struct DeviceListener {
      * inform qdev that a device should be hidden, depending on the device
      * opts, for example, to hide a standby device.
      */
-    int (*should_be_hidden)(DeviceListener *listener, QemuOpts *device_opts);
+    bool (*should_be_hidden)(DeviceListener *listener, QemuOpts *device_opts);
     QTAILQ_ENTRY(DeviceListener) link;
 };
 
diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index 262bca716f..8f4b8f3cc1 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -214,26 +214,17 @@ void device_listener_unregister(DeviceListener *listener)
 
 bool qdev_should_hide_device(QemuOpts *opts)
 {
-    int rc = -1;
     DeviceListener *listener;
 
     QTAILQ_FOREACH(listener, &device_listeners, link) {
-       if (listener->should_be_hidden) {
-            /*
-             * should_be_hidden_will return
-             *  1 if device matches opts and it should be hidden
-             *  0 if device matches opts and should not be hidden
-             *  -1 if device doesn't match ops
-             */
-            rc = listener->should_be_hidden(listener, opts);
-        }
-
-        if (rc > 0) {
-            break;
+        if (listener->should_be_hidden) {
+            if (listener->should_be_hidden(listener, opts)) {
+                return true;
+            }
         }
     }
 
-    return rc > 0;
+    return false;
 }
 
 void qdev_set_legacy_instance_id(DeviceState *dev, int alias_id,
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index 881907d1bd..9f12d33da0 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -3161,24 +3161,19 @@ static void virtio_net_migration_state_notifier(Notifier *notifier, void *data)
     virtio_net_handle_migration_primary(n, s);
 }
 
-static int virtio_net_primary_should_be_hidden(DeviceListener *listener,
-                                               QemuOpts *device_opts)
+static bool virtio_net_primary_should_be_hidden(DeviceListener *listener,
+                                                QemuOpts *device_opts)
 {
     VirtIONet *n = container_of(listener, VirtIONet, primary_listener);
-    bool match_found = false;
-    bool hide = false;
+    bool hide;
     const char *standby_id;
 
     if (!device_opts) {
-        return -1;
+        return false;
     }
     standby_id = qemu_opt_get(device_opts, "failover_pair_id");
-    if (g_strcmp0(standby_id, n->netclient_name) == 0) {
-        match_found = true;
-    } else {
-        match_found = false;
-        hide = false;
-        goto out;
+    if (g_strcmp0(standby_id, n->netclient_name) != 0) {
+        return false;
     }
 
     /* failover_primary_hidden is set during feature negotiation */
@@ -3188,15 +3183,7 @@ static int virtio_net_primary_should_be_hidden(DeviceListener *listener,
     if (!n->primary_device_id) {
         warn_report("primary_device_id not set");
     }
-
-out:
-    if (match_found && hide) {
-        return 1;
-    } else if (match_found && !hide) {
-        return 0;
-    } else {
-        return -1;
-    }
+    return hide;
 }
 
 static void virtio_net_device_realize(DeviceState *dev, Error **errp)
-- 
MST



  parent reply	other threads:[~2020-12-08 20:01 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-08 19:33 [PULL 00/66] pc,pci,virtio: fixes, cleanups Michael S. Tsirkin
2020-12-08 19:33 ` [PULL 01/66] vhost-user-scsi: Fix memleaks in vus_proc_req() Michael S. Tsirkin
2020-12-08 19:33 ` [PULL 02/66] memory: Rename memory_region_notify_one to memory_region_notify_iommu_one Michael S. Tsirkin
2020-12-08 19:33 ` [PULL 03/66] memory: Add IOMMUTLBEvent Michael S. Tsirkin
2020-12-08 19:33 ` [PULL 04/66] memory: Add IOMMU_NOTIFIER_DEVIOTLB_UNMAP IOMMUTLBNotificationType Michael S. Tsirkin
2020-12-08 19:33 ` [PULL 05/66] intel_iommu: Skip page walking on device iotlb invalidations Michael S. Tsirkin
2020-12-08 19:33 ` [PULL 06/66] memory: Skip bad range assertion if notifier is DEVIOTLB_UNMAP type Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 07/66] virtio: reset device on bad guest index in virtio_load() Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 08/66] acpi/gpex: Extract two APIs from acpi_dsdt_add_pci Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 09/66] fw_cfg: Refactor extra pci roots addition Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 10/66] hw/arm/virt: Write extra pci roots into fw_cfg Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 11/66] acpi: Extract crs build form acpi_build.c Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 12/66] acpi/gpex: Build tables for pxb Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 13/66] acpi: Align the size to 128k Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 14/66] unit-test: The files changed Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 15/66] unit-test: Add testcase for pxb Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 16/66] unit-test: Add the binary file and clear diff.h Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 17/66] failover: fix indentantion Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 18/66] failover: Use always atomics for primary_should_be_hidden Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 19/66] failover: primary bus is only used once, and where it is set Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 20/66] failover: Remove unused parameter Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 21/66] failover: Remove external partially_hotplugged property Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 22/66] failover: qdev_device_add() returns err or dev set Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 23/66] failover: Rename bool to failover_primary_hidden Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 24/66] failover: g_strcmp0() knows how to handle NULL Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 25/66] failover: Remove primary_device_opts Michael S. Tsirkin
2020-12-08 19:34 ` [PULL 26/66] failover: remove standby_id variable Michael S. Tsirkin
2020-12-08 19:35 ` [PULL 27/66] failover: Remove primary_device_dict Michael S. Tsirkin
2020-12-08 19:35 ` [PULL 28/66] failover: Remove memory leak Michael S. Tsirkin
2020-12-08 19:35 ` [PULL 29/66] failover: simplify virtio_net_find_primary() Michael S. Tsirkin
2020-12-08 19:35 ` Michael S. Tsirkin [this message]
2020-12-08 19:35 ` [PULL 31/66] failover: Rename function to hide_device() Michael S. Tsirkin
2020-12-08 19:35 ` [PULL 32/66] failover: virtio_net_connect_failover_devices() does nothing Michael S. Tsirkin
2020-12-08 19:35 ` [PULL 33/66] failover: Rename to failover_find_primary_device() Michael S. Tsirkin
2020-12-08 19:35 ` [PULL 34/66] failover: simplify qdev_device_add() failover case Michael S. Tsirkin
2020-12-08 19:35 ` [PULL 35/66] failover: simplify qdev_device_add() Michael S. Tsirkin
2020-12-08 19:35 ` [PULL 36/66] failover: make sure that id always exist Michael S. Tsirkin
2020-12-08 19:35 ` [PULL 37/66] failover: remove failover_find_primary_device() error parameter Michael S. Tsirkin
2020-12-08 19:35 ` [PULL 38/66] failover: split failover_find_primary_device_id() Michael S. Tsirkin
2020-12-08 19:35 ` [PULL 39/66] failover: We don't need to cache primary_device_id anymore Michael S. Tsirkin
2020-12-08 19:35 ` [PULL 40/66] failover: Caller of this two functions already have primary_dev Michael S. Tsirkin
2020-12-08 19:36 ` [PULL 41/66] failover: simplify failover_unplug_primary Michael S. Tsirkin
2020-12-08 19:36 ` [PULL 42/66] failover: Remove primary_dev member Michael S. Tsirkin
2020-12-08 19:36 ` [PULL 43/66] hw: add compat machines for 6.0 Michael S. Tsirkin
2020-12-08 19:36 ` [PULL 44/66] libvhost-user: replace qemu/bswap.h with glibc endian.h Michael S. Tsirkin
2020-12-08 19:36 ` [PULL 45/66] libvhost-user: replace qemu/memfd.h usage Michael S. Tsirkin
2020-12-08 19:36 ` [PULL 46/66] libvhost-user: remove qemu/compiler.h usage Michael S. Tsirkin
2020-12-08 19:36 ` [PULL 47/66] libvhost-user: drop qemu/osdep.h dependency Michael S. Tsirkin
2020-12-08 19:36 ` [PULL 48/66] libvhost-user: make it a meson subproject Michael S. Tsirkin
2020-12-08 19:36 ` [PULL 49/66] libvhost-user: check memfd API Michael S. Tsirkin
2020-12-08 19:36 ` [PULL 50/66] libvhost-user: add a simple link test without glib Michael S. Tsirkin
2020-12-08 19:36 ` [PULL 51/66] .gitlab-ci: add build-libvhost-user Michael S. Tsirkin
2020-12-08 19:36 ` [PULL 52/66] contrib/vhost-user-blk: avoid g_return_val_if() input validation Michael S. Tsirkin
2020-12-08 19:36 ` [PULL 53/66] contrib/vhost-user-gpu: " Michael S. Tsirkin
2020-12-08 19:37 ` [PULL 54/66] contrib/vhost-user-input: " Michael S. Tsirkin
2020-12-08 19:37 ` [PULL 55/66] block/export: " Michael S. Tsirkin
2020-12-08 19:37 ` [PULL 56/66] hw/i386/pc: add max combined fw size as machine configuration option Michael S. Tsirkin
2020-12-08 19:37 ` [PULL 57/66] acpi: cpuhp: introduce 'firmware performs eject' status/control bits Michael S. Tsirkin
2020-12-08 19:37 ` [PULL 58/66] x86: acpi: introduce AcpiPmInfo::smi_on_cpu_unplug Michael S. Tsirkin
2020-12-08 19:37 ` [PULL 59/66] tests/acpi: allow expected files change Michael S. Tsirkin
2020-12-08 19:37 ` [PULL 60/66] x86: acpi: let the firmware handle pending "CPU remove" events in SMM Michael S. Tsirkin
2020-12-08 19:37 ` [PULL 61/66] tests/acpi: update expected files Michael S. Tsirkin
2020-12-08 19:37 ` [PULL 62/66] x86: ich9: factor out "guest_cpu_hotplug_features" Michael S. Tsirkin
2020-12-08 19:37 ` [PULL 63/66] x86: ich9: let firmware negotiate 'CPU hot-unplug with SMI' feature Michael S. Tsirkin
2020-12-08 19:37 ` [PULL 64/66] pcie_aer: Fix help message of pcie_aer_inject_error command Michael S. Tsirkin
2020-12-08 19:37 ` [PULL 65/66] hw/virtio-pci Added counter for pcie capabilities offsets Michael S. Tsirkin
2020-12-08 19:37 ` [PULL 66/66] hw/virtio-pci Added AER capability Michael S. Tsirkin
2020-12-08 19:53 ` [PULL 00/66] pc,pci,virtio: fixes, cleanups Philippe Mathieu-Daudé
2020-12-08 20:26   ` Michael S. Tsirkin
2020-12-09 14:37 ` Peter Maydell
2020-12-09 16:20   ` Peter Maydell
2020-12-09 18:05     ` Michael S. Tsirkin

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=20201208193307.646726-31-mst@redhat.com \
    --to=mst@redhat.com \
    --cc=berrange@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@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.