128 lines
5.4 KiB
Diff
128 lines
5.4 KiB
Diff
From 1fbde79ae60990ff0439f3f3bb060f7d723e4910 Mon Sep 17 00:00:00 2001
|
|
From: Laurent Vivier <lvivier@redhat.com>
|
|
Date: Thu, 25 Feb 2021 23:14:35 -0500
|
|
Subject: [PATCH 38/54] failover: Rename function to hide_device()
|
|
|
|
RH-Author: Laurent Vivier <lvivier@redhat.com>
|
|
Message-id: <20210225231447.2187738-16-lvivier@redhat.com>
|
|
Patchwork-id: 101264
|
|
O-Subject: [RHEL-AV-8.4.0 qemu-kvm PATCH v2 15/27] failover: Rename function to hide_device()
|
|
Bugzilla: 1819991
|
|
RH-Acked-by: Juan Quintela <quintela@redhat.com>
|
|
RH-Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
|
RH-Acked-by: Jens Freimann <jfreimann@redhat.com>
|
|
RH-Acked-by: Michael S. Tsirkin <mst@redhat.com>
|
|
|
|
From: Juan Quintela <quintela@redhat.com>
|
|
|
|
BZ: https://bugzilla.redhat.com/1819991
|
|
BRANCH: rhel-av-8.4.0
|
|
UPSTREAM: Merged
|
|
|
|
You should not use pasive.
|
|
|
|
Signed-off-by: Juan Quintela <quintela@redhat.com>
|
|
Message-Id: <20201118083748.1328-17-quintela@redhat.com>
|
|
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
|
|
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
|
|
(cherry picked from commit b91ad981b867e15171234efc3f2ab4074d377cef)
|
|
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
|
|
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
|
---
|
|
hw/core/qdev.c | 4 ++--
|
|
hw/net/virtio-net.c | 7 +++----
|
|
include/hw/qdev-core.h | 28 +++++++++++++++-------------
|
|
3 files changed, 20 insertions(+), 19 deletions(-)
|
|
|
|
diff --git a/hw/core/qdev.c b/hw/core/qdev.c
|
|
index 8f4b8f3cc1..cbdff0b6c6 100644
|
|
--- a/hw/core/qdev.c
|
|
+++ b/hw/core/qdev.c
|
|
@@ -217,8 +217,8 @@ bool qdev_should_hide_device(QemuOpts *opts)
|
|
DeviceListener *listener;
|
|
|
|
QTAILQ_FOREACH(listener, &device_listeners, link) {
|
|
- if (listener->should_be_hidden) {
|
|
- if (listener->should_be_hidden(listener, opts)) {
|
|
+ if (listener->hide_device) {
|
|
+ if (listener->hide_device(listener, opts)) {
|
|
return true;
|
|
}
|
|
}
|
|
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
|
|
index 9f12d33da0..747614ff2a 100644
|
|
--- a/hw/net/virtio-net.c
|
|
+++ b/hw/net/virtio-net.c
|
|
@@ -3161,8 +3161,8 @@ static void virtio_net_migration_state_notifier(Notifier *notifier, void *data)
|
|
virtio_net_handle_migration_primary(n, s);
|
|
}
|
|
|
|
-static bool virtio_net_primary_should_be_hidden(DeviceListener *listener,
|
|
- QemuOpts *device_opts)
|
|
+static bool failover_hide_primary_device(DeviceListener *listener,
|
|
+ QemuOpts *device_opts)
|
|
{
|
|
VirtIONet *n = container_of(listener, VirtIONet, primary_listener);
|
|
bool hide;
|
|
@@ -3220,8 +3220,7 @@ static void virtio_net_device_realize(DeviceState *dev, Error **errp)
|
|
}
|
|
|
|
if (n->failover) {
|
|
- n->primary_listener.should_be_hidden =
|
|
- virtio_net_primary_should_be_hidden;
|
|
+ n->primary_listener.hide_device = failover_hide_primary_device;
|
|
qatomic_set(&n->failover_primary_hidden, true);
|
|
device_listener_register(&n->primary_listener);
|
|
n->migration_state.notify = virtio_net_migration_state_notifier;
|
|
diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
|
|
index 250f4edef6..6ac86db44e 100644
|
|
--- a/include/hw/qdev-core.h
|
|
+++ b/include/hw/qdev-core.h
|
|
@@ -81,16 +81,17 @@ typedef void (*BusUnrealize)(BusState *bus);
|
|
* </note>
|
|
*
|
|
* # Hiding a device #
|
|
- * To hide a device, a DeviceListener function should_be_hidden() needs to
|
|
+ * To hide a device, a DeviceListener function hide_device() needs to
|
|
* be registered.
|
|
- * It can be used to defer adding a device and therefore hide it from the
|
|
- * guest. The handler registering to this DeviceListener can save the QOpts
|
|
- * passed to it for re-using it later and must return that it wants the device
|
|
- * to be/remain hidden or not. When the handler function decides the device
|
|
- * shall not be hidden it will be added in qdev_device_add() and
|
|
- * realized as any other device. Otherwise qdev_device_add() will return early
|
|
- * without adding the device. The guest will not see a "hidden" device
|
|
- * until it was marked don't hide and qdev_device_add called again.
|
|
+ * It can be used to defer adding a device and therefore hide it from
|
|
+ * the guest. The handler registering to this DeviceListener can save
|
|
+ * the QOpts passed to it for re-using it later. It must return if it
|
|
+ * wants the device to be hidden or visible. When the handler function
|
|
+ * decides the device shall be visible it will be added with
|
|
+ * qdev_device_add() and realized as any other device. Otherwise
|
|
+ * qdev_device_add() will return early without adding the device. The
|
|
+ * guest will not see a "hidden" device until it was marked visible
|
|
+ * and qdev_device_add called again.
|
|
*
|
|
*/
|
|
struct DeviceClass {
|
|
@@ -196,11 +197,12 @@ struct DeviceListener {
|
|
void (*realize)(DeviceListener *listener, DeviceState *dev);
|
|
void (*unrealize)(DeviceListener *listener, DeviceState *dev);
|
|
/*
|
|
- * This callback is called upon init of the DeviceState and allows to
|
|
- * inform qdev that a device should be hidden, depending on the device
|
|
- * opts, for example, to hide a standby device.
|
|
+ * This callback is called upon init of the DeviceState and
|
|
+ * informs qdev if a device should be visible or hidden. We can
|
|
+ * hide a failover device depending for example on the device
|
|
+ * opts.
|
|
*/
|
|
- bool (*should_be_hidden)(DeviceListener *listener, QemuOpts *device_opts);
|
|
+ bool (*hide_device)(DeviceListener *listener, QemuOpts *device_opts);
|
|
QTAILQ_ENTRY(DeviceListener) link;
|
|
};
|
|
|
|
--
|
|
2.27.0
|
|
|