diff options
author | Juan Quintela | 2020-11-18 09:37:48 +0100 |
---|---|---|
committer | Michael S. Tsirkin | 2020-12-08 19:48:58 +0100 |
commit | 21e8709b29cd981c74565e75276ed476c954cbbf (patch) | |
tree | 5f942790da3737d6ae0b7a6022943d05c5e423de /hw/net | |
parent | failover: simplify failover_unplug_primary (diff) | |
download | qemu-21e8709b29cd981c74565e75276ed476c954cbbf.tar.gz qemu-21e8709b29cd981c74565e75276ed476c954cbbf.tar.xz qemu-21e8709b29cd981c74565e75276ed476c954cbbf.zip |
failover: Remove primary_dev member
Only three uses remained, and we can remove them on that case.
Signed-off-by: Juan Quintela <quintela@redhat.com>
Message-Id: <20201118083748.1328-28-quintela@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'hw/net')
-rw-r--r-- | hw/net/virtio-net.c | 55 |
1 files changed, 24 insertions, 31 deletions
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index 9203d81780..044ac95f6f 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -832,13 +832,31 @@ static char *failover_find_primary_device_id(VirtIONet *n) return fid.id; } +/** + * Find the primary device for this failover virtio-net + * + * @n: VirtIONet device + * @errp: returns an error if this function fails + */ +static DeviceState *failover_find_primary_device(VirtIONet *n) +{ + char *id = failover_find_primary_device_id(n); + + if (!id) { + return NULL; + } + + return qdev_find_recursive(sysbus_get_default(), id); +} + static void failover_add_primary(VirtIONet *n, Error **errp) { Error *err = NULL; QemuOpts *opts; char *id; + DeviceState *dev = failover_find_primary_device(n); - if (n->primary_dev) { + if (dev) { return; } @@ -848,7 +866,7 @@ static void failover_add_primary(VirtIONet *n, Error **errp) } opts = qemu_opts_find(qemu_find_opts("device"), id); if (opts) { - n->primary_dev = qdev_device_add(opts, &err); + dev = qdev_device_add(opts, &err); if (err) { qemu_opts_del(opts); } @@ -861,23 +879,6 @@ static void failover_add_primary(VirtIONet *n, Error **errp) error_propagate(errp, err); } -/** - * Find the primary device for this failover virtio-net - * - * @n: VirtIONet device - * @errp: returns an error if this function fails - */ -static DeviceState *failover_find_primary_device(VirtIONet *n) -{ - char *id = failover_find_primary_device_id(n); - - if (!id) { - return NULL; - } - - return qdev_find_recursive(sysbus_get_default(), id); -} - static void virtio_net_set_features(VirtIODevice *vdev, uint64_t features) { VirtIONet *n = VIRTIO_NET(vdev); @@ -933,19 +934,9 @@ static void virtio_net_set_features(VirtIODevice *vdev, uint64_t features) qatomic_set(&n->failover_primary_hidden, false); failover_add_primary(n, &err); if (err) { - n->primary_dev = failover_find_primary_device(n); - failover_add_primary(n, &err); - if (err) { - goto out_err; - } + warn_report_err(err); } } - return; - -out_err: - if (err) { - warn_report_err(err); - } } static int virtio_net_handle_rx_mode(VirtIONet *n, uint8_t cmd, @@ -3420,13 +3411,15 @@ static int virtio_net_pre_save(void *opaque) static bool primary_unplug_pending(void *opaque) { DeviceState *dev = opaque; + DeviceState *primary; VirtIODevice *vdev = VIRTIO_DEVICE(dev); VirtIONet *n = VIRTIO_NET(vdev); if (!virtio_vdev_has_feature(vdev, VIRTIO_NET_F_STANDBY)) { return false; } - return n->primary_dev ? n->primary_dev->pending_deleted_event : false; + primary = failover_find_primary_device(n); + return primary ? primary->pending_deleted_event : false; } static bool dev_unplug_pending(void *opaque) |