[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 03/17] failover: really display a warning when the primary device
From: |
Michael S. Tsirkin |
Subject: |
[PULL 03/17] failover: really display a warning when the primary device is not found |
Date: |
Tue, 23 Feb 2021 11:03:47 -0500 |
From: Laurent Vivier <lvivier@redhat.com>
In failover_add_primary(), we search the id of the failover device by
scanning the list of the devices in the opts list to find a device with
a failover_pair_id equals to the id of the virtio-net device.
If the failover_pair_id is not found, QEMU ignores the primary
device silently (which also means it will not be hidden and
it will be enabled directly at boot).
After that, we search the id in the opts list to do a qdev_device_add()
with it. The device will be always found as otherwise we had exited
before, and thus the warning is never displayed.
Fix that by moving the error report to the first exit condition.
Also add a g_assert() to be sure the compiler will not complain
about a possibly NULL pointer.
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Message-Id: <20210212135250.2738750-4-lvivier@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
hw/net/virtio-net.c | 22 ++++++++++------------
1 file changed, 10 insertions(+), 12 deletions(-)
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index 1c5af08dc5..439f823b19 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -855,21 +855,19 @@ static void failover_add_primary(VirtIONet *n, Error
**errp)
id = failover_find_primary_device_id(n);
if (!id) {
- return;
- }
- opts = qemu_opts_find(qemu_find_opts("device"), id);
- if (opts) {
- dev = qdev_device_add(opts, &err);
- if (err) {
- qemu_opts_del(opts);
- } else {
- object_unref(OBJECT(dev));
- }
- } else {
error_setg(errp, "Primary device not found");
error_append_hint(errp, "Virtio-net failover will not work. Make "
"sure primary device has parameter"
- " failover_pair_id=<virtio-net-id>\n");
+ " failover_pair_id=%s\n", n->netclient_name);
+ return;
+ }
+ opts = qemu_opts_find(qemu_find_opts("device"), id);
+ g_assert(opts); /* cannot be NULL because id was found using opts list */
+ dev = qdev_device_add(opts, &err);
+ if (err) {
+ qemu_opts_del(opts);
+ } else {
+ object_unref(OBJECT(dev));
}
error_propagate(errp, err);
}
--
MST
- [PULL 00/17] pc,virtio,pci: fixes, tests, Michael S. Tsirkin, 2021/02/23
- [PULL 17/17] qtest/acpi/bios-tables-test: update acpi tables, Michael S. Tsirkin, 2021/02/23
- [PULL 10/17] ich9, piix4: add property, smm-compat, to keep compatibility of SMM, Michael S. Tsirkin, 2021/02/23
- [PULL 03/17] failover: really display a warning when the primary device is not found,
Michael S. Tsirkin <=
- [PULL 05/17] acpi: Allow pxb DSDT acpi table changes, Michael S. Tsirkin, 2021/02/23
- [PULL 06/17] acpi/gpex: Fix cca attribute check for pxb device, Michael S. Tsirkin, 2021/02/23
- [PULL 07/17] tests/data/acpi/virt/DSDT.pxb: update with _CCA, Michael S. Tsirkin, 2021/02/23
- [PULL 13/17] acpi: add test case for smm unsupported -machine smm=off, Michael S. Tsirkin, 2021/02/23
- [PULL 02/17] virtio-net: add missing object_unref(), Michael S. Tsirkin, 2021/02/23
- [PULL 09/17] qtest: update tests/qtest/bios-tables-test-allowed-diff.h, Michael S. Tsirkin, 2021/02/23
- [PULL 01/17] pci: cleanup failover sanity check, Michael S. Tsirkin, 2021/02/23
- [PULL 11/17] acpi/core: always set SCI_EN when SMM isn't supported, Michael S. Tsirkin, 2021/02/23
- [PULL 15/17] i386: acpi: Don't build HPET ACPI entry if HPET is disabled, Michael S. Tsirkin, 2021/02/23
- [PULL 04/17] pcie: don't set link state active if the slot is empty, Michael S. Tsirkin, 2021/02/23