diff options
author | Juan Quintela <quintela@redhat.com> | 2020-11-18 09:37:47 +0100 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2020-12-08 13:48:58 -0500 |
commit | 07a5d816d50f5f876d5fcd43724a6ff17cf59a4f (patch) | |
tree | 4d593cf4d12b5bcc76ece66762d63df9ffc87432 /hw/net | |
parent | 0e9a65c5b168b993b845ec2acb2568328c2353da (diff) |
failover: simplify failover_unplug_primary
We can calculate device just once.
Signed-off-by: Juan Quintela <quintela@redhat.com>
Message-Id: <20201118083748.1328-27-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 | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index b37e9cd1d9..9203d81780 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -3146,34 +3146,29 @@ out: return !err; } -static void virtio_net_handle_migration_primary(VirtIONet *n, - MigrationState *s) +static void virtio_net_handle_migration_primary(VirtIONet *n, MigrationState *s) { bool should_be_hidden; Error *err = NULL; + DeviceState *dev = failover_find_primary_device(n); - should_be_hidden = qatomic_read(&n->failover_primary_hidden); - - if (!n->primary_dev) { - n->primary_dev = failover_find_primary_device(n); - if (!n->primary_dev) { - return; - } + if (!dev) { + return; } + should_be_hidden = qatomic_read(&n->failover_primary_hidden); + if (migration_in_setup(s) && !should_be_hidden) { - if (failover_unplug_primary(n, n->primary_dev)) { - vmstate_unregister(VMSTATE_IF(n->primary_dev), - qdev_get_vmsd(n->primary_dev), - n->primary_dev); - qapi_event_send_unplug_primary(n->primary_dev->id); + if (failover_unplug_primary(n, dev)) { + vmstate_unregister(VMSTATE_IF(dev), qdev_get_vmsd(dev), dev); + qapi_event_send_unplug_primary(dev->id); qatomic_set(&n->failover_primary_hidden, true); } else { warn_report("couldn't unplug primary device"); } } else if (migration_has_failed(s)) { /* We already unplugged the device let's plug it back */ - if (!failover_replug_primary(n, n->primary_dev, &err)) { + if (!failover_replug_primary(n, dev, &err)) { if (err) { error_report_err(err); } |