* [PATCH 0/2] failover: trivial cleanup and fix
@ 2021-02-06 12:39 Laurent Vivier
2021-02-06 12:39 ` [PATCH 1/2] pci: cleanup failover sanity check Laurent Vivier
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Laurent Vivier @ 2021-02-06 12:39 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-trivial, jfreimann, Laurent Vivier, quintela
The first patch removes a duplicate assignment to allow_unplug_during_migrati=
on,
and simplify the code.
The second patch fixes a dangling object in failover_add_primary() that preve=
nts
to cleanup the internal structure after the object has been unplugged.
Laurent Vivier (2):
pci: cleanup failover sanity check
virtio-net: add missing object_unref()
hw/net/virtio-net.c | 2 ++
hw/pci/pci.c | 6 ++----
2 files changed, 4 insertions(+), 4 deletions(-)
--=20
2.29.2
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/2] pci: cleanup failover sanity check
2021-02-06 12:39 [PATCH 0/2] failover: trivial cleanup and fix Laurent Vivier
@ 2021-02-06 12:39 ` Laurent Vivier
2021-02-06 14:32 ` Laurent Vivier
` (2 more replies)
2021-02-06 12:39 ` [PATCH 2/2] virtio-net: add missing object_unref() Laurent Vivier
2021-02-10 13:40 ` [PATCH 0/2] failover: trivial cleanup and fix Laurent Vivier
2 siblings, 3 replies; 9+ messages in thread
From: Laurent Vivier @ 2021-02-06 12:39 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-trivial, jfreimann, Laurent Vivier, quintela
Commit a1190ab628 has added a "allow_unplug_during_migration = true" at
the end of the main "if" block, so it is not needed to set it anymore
in the previous checking.
Remove it, to have only sub-ifs that check for needed conditions and exit
if one fails.
Fixes: 4f5b6a05a4e7 ("pci: add option for net failover")
Fixes: a1190ab628c0 ("migration: allow unplug during migration for failover devices")
Cc: jfreimann@redhat.com
Signed-off-by: Laurent Vivier <lvivier@virtlab415.virt.lab.eng.bos.redhat.com>
---
hw/pci/pci.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 512e9042ffae..ecb7aa31fabd 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -2120,10 +2120,8 @@ static void pci_qdev_realize(DeviceState *qdev, Error **errp)
pci_qdev_unrealize(DEVICE(pci_dev));
return;
}
- if (!(pci_dev->cap_present & QEMU_PCI_CAP_MULTIFUNCTION)
- && (PCI_FUNC(pci_dev->devfn) == 0)) {
- qdev->allow_unplug_during_migration = true;
- } else {
+ if ((pci_dev->cap_present & QEMU_PCI_CAP_MULTIFUNCTION)
+ || (PCI_FUNC(pci_dev->devfn) != 0)) {
error_setg(errp, "failover: primary device must be in its own "
"PCI slot");
pci_qdev_unrealize(DEVICE(pci_dev));
--
2.29.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/2] virtio-net: add missing object_unref()
2021-02-06 12:39 [PATCH 0/2] failover: trivial cleanup and fix Laurent Vivier
2021-02-06 12:39 ` [PATCH 1/2] pci: cleanup failover sanity check Laurent Vivier
@ 2021-02-06 12:39 ` Laurent Vivier
2021-02-08 8:45 ` Jens Freimann
2021-02-09 16:50 ` Laurent Vivier
2021-02-10 13:40 ` [PATCH 0/2] failover: trivial cleanup and fix Laurent Vivier
2 siblings, 2 replies; 9+ messages in thread
From: Laurent Vivier @ 2021-02-06 12:39 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-trivial, jfreimann, Laurent Vivier, quintela
failover_add_primary() calls qdev_device_add() and doesn't unref
the device. Because of that, when the device is unplugged a reference
is remaining and prevents the cleanup of the object.
This prevents to be able to plugin back the failover primary device,
with errors like:
(qemu) device_add vfio-pci,host=0000:41:00.0,id=hostdev0,bus=root.3,failover_pair_id=net0
(qemu) device_del hostdev0
We can check with "info qtree" and "info pci" that the device has been removed, and then:
(qemu) device_add vfio-pci,host=0000:41:00.0,id=hostdev1,bus=root.3,failover_pair_id=net0
Error: vfio 0000:41:00.0: device is already attached
(qemu) device_add vfio-pci,host=0000:41:00.0,id=hostdev0,bus=root.3,failover_pair_id=net0
qemu-kvm: Duplicate ID 'hostdev0' for device
Fixes: 21e8709b29cd ("failover: Remove primary_dev member")
Cc: quintela@redhat.com
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
---
hw/net/virtio-net.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index 5150f295e8c5..1c5af08dc556 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -862,6 +862,8 @@ static void failover_add_primary(VirtIONet *n, Error **errp)
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");
--
2.29.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] pci: cleanup failover sanity check
2021-02-06 12:39 ` [PATCH 1/2] pci: cleanup failover sanity check Laurent Vivier
@ 2021-02-06 14:32 ` Laurent Vivier
2021-02-08 8:42 ` Jens Freimann
2021-02-09 16:49 ` Laurent Vivier
2 siblings, 0 replies; 9+ messages in thread
From: Laurent Vivier @ 2021-02-06 14:32 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-trivial, jfreimann, Laurent Vivier, quintela
On 06/02/2021 13:39, Laurent Vivier wrote:
> Commit a1190ab628 has added a "allow_unplug_during_migration = true" at
> the end of the main "if" block, so it is not needed to set it anymore
> in the previous checking.
>
> Remove it, to have only sub-ifs that check for needed conditions and exit
> if one fails.
>
> Fixes: 4f5b6a05a4e7 ("pci: add option for net failover")
> Fixes: a1190ab628c0 ("migration: allow unplug during migration for failover devices")
> Cc: jfreimann@redhat.com
> Signed-off-by: Laurent Vivier <lvivier@virtlab415.virt.lab.eng.bos.redhat.com>
Sorry, git misconfiguration, read:
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
> ---
> hw/pci/pci.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/hw/pci/pci.c b/hw/pci/pci.c
> index 512e9042ffae..ecb7aa31fabd 100644
> --- a/hw/pci/pci.c
> +++ b/hw/pci/pci.c
> @@ -2120,10 +2120,8 @@ static void pci_qdev_realize(DeviceState *qdev, Error **errp)
> pci_qdev_unrealize(DEVICE(pci_dev));
> return;
> }
> - if (!(pci_dev->cap_present & QEMU_PCI_CAP_MULTIFUNCTION)
> - && (PCI_FUNC(pci_dev->devfn) == 0)) {
> - qdev->allow_unplug_during_migration = true;
> - } else {
> + if ((pci_dev->cap_present & QEMU_PCI_CAP_MULTIFUNCTION)
> + || (PCI_FUNC(pci_dev->devfn) != 0)) {
> error_setg(errp, "failover: primary device must be in its own "
> "PCI slot");
> pci_qdev_unrealize(DEVICE(pci_dev));
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] pci: cleanup failover sanity check
2021-02-06 12:39 ` [PATCH 1/2] pci: cleanup failover sanity check Laurent Vivier
2021-02-06 14:32 ` Laurent Vivier
@ 2021-02-08 8:42 ` Jens Freimann
2021-02-09 16:49 ` Laurent Vivier
2 siblings, 0 replies; 9+ messages in thread
From: Jens Freimann @ 2021-02-08 8:42 UTC (permalink / raw)
To: Laurent Vivier; +Cc: qemu-trivial, Laurent Vivier, qemu-devel, quintela
On Sat, Feb 06, 2021 at 01:39:54PM +0100, Laurent Vivier wrote:
>Commit a1190ab628 has added a "allow_unplug_during_migration = true" at
>the end of the main "if" block, so it is not needed to set it anymore
>in the previous checking.
>
>Remove it, to have only sub-ifs that check for needed conditions and exit
>if one fails.
>
>Fixes: 4f5b6a05a4e7 ("pci: add option for net failover")
>Fixes: a1190ab628c0 ("migration: allow unplug during migration for failover devices")
>Cc: jfreimann@redhat.com
>Signed-off-by: Laurent Vivier <lvivier@virtlab415.virt.lab.eng.bos.redhat.com>
>---
> hw/pci/pci.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
Reviewed-by: Jens Freimann <jfreimann@redhat.com>
Thank you Laurent!
regards,
Jens
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] virtio-net: add missing object_unref()
2021-02-06 12:39 ` [PATCH 2/2] virtio-net: add missing object_unref() Laurent Vivier
@ 2021-02-08 8:45 ` Jens Freimann
2021-02-09 16:50 ` Laurent Vivier
1 sibling, 0 replies; 9+ messages in thread
From: Jens Freimann @ 2021-02-08 8:45 UTC (permalink / raw)
To: Laurent Vivier; +Cc: qemu-trivial, Laurent Vivier, qemu-devel, quintela
On Sat, Feb 06, 2021 at 01:39:55PM +0100, Laurent Vivier wrote:
>failover_add_primary() calls qdev_device_add() and doesn't unref
>the device. Because of that, when the device is unplugged a reference
>is remaining and prevents the cleanup of the object.
>
>This prevents to be able to plugin back the failover primary device,
>with errors like:
>
> (qemu) device_add vfio-pci,host=0000:41:00.0,id=hostdev0,bus=root.3,failover_pair_id=net0
> (qemu) device_del hostdev0
>
>We can check with "info qtree" and "info pci" that the device has been removed, and then:
>
> (qemu) device_add vfio-pci,host=0000:41:00.0,id=hostdev1,bus=root.3,failover_pair_id=net0
> Error: vfio 0000:41:00.0: device is already attached
> (qemu) device_add vfio-pci,host=0000:41:00.0,id=hostdev0,bus=root.3,failover_pair_id=net0
> qemu-kvm: Duplicate ID 'hostdev0' for device
>
>Fixes: 21e8709b29cd ("failover: Remove primary_dev member")
>Cc: quintela@redhat.com
>Signed-off-by: Laurent Vivier <lvivier@redhat.com>
>---
> hw/net/virtio-net.c | 2 ++
> 1 file changed, 2 insertions(+)
>
Reviewed-by: Jens Freimann <jfreimann@redhat.com>
Thank you Laurent!
regards,
Jens
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] pci: cleanup failover sanity check
2021-02-06 12:39 ` [PATCH 1/2] pci: cleanup failover sanity check Laurent Vivier
2021-02-06 14:32 ` Laurent Vivier
2021-02-08 8:42 ` Jens Freimann
@ 2021-02-09 16:49 ` Laurent Vivier
2 siblings, 0 replies; 9+ messages in thread
From: Laurent Vivier @ 2021-02-09 16:49 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-trivial, jfreimann, Michael S. Tsirkin, Laurent Vivier,
quintela
CC: Michael
On 06/02/2021 13:39, Laurent Vivier wrote:
> Commit a1190ab628 has added a "allow_unplug_during_migration = true" at
> the end of the main "if" block, so it is not needed to set it anymore
> in the previous checking.
>
> Remove it, to have only sub-ifs that check for needed conditions and exit
> if one fails.
>
> Fixes: 4f5b6a05a4e7 ("pci: add option for net failover")
> Fixes: a1190ab628c0 ("migration: allow unplug during migration for failover devices")
> Cc: jfreimann@redhat.com
> Signed-off-by: Laurent Vivier <lvivier@virtlab415.virt.lab.eng.bos.redhat.com>
> ---
> hw/pci/pci.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/hw/pci/pci.c b/hw/pci/pci.c
> index 512e9042ffae..ecb7aa31fabd 100644
> --- a/hw/pci/pci.c
> +++ b/hw/pci/pci.c
> @@ -2120,10 +2120,8 @@ static void pci_qdev_realize(DeviceState *qdev, Error **errp)
> pci_qdev_unrealize(DEVICE(pci_dev));
> return;
> }
> - if (!(pci_dev->cap_present & QEMU_PCI_CAP_MULTIFUNCTION)
> - && (PCI_FUNC(pci_dev->devfn) == 0)) {
> - qdev->allow_unplug_during_migration = true;
> - } else {
> + if ((pci_dev->cap_present & QEMU_PCI_CAP_MULTIFUNCTION)
> + || (PCI_FUNC(pci_dev->devfn) != 0)) {
> error_setg(errp, "failover: primary device must be in its own "
> "PCI slot");
> pci_qdev_unrealize(DEVICE(pci_dev));
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] virtio-net: add missing object_unref()
2021-02-06 12:39 ` [PATCH 2/2] virtio-net: add missing object_unref() Laurent Vivier
2021-02-08 8:45 ` Jens Freimann
@ 2021-02-09 16:50 ` Laurent Vivier
1 sibling, 0 replies; 9+ messages in thread
From: Laurent Vivier @ 2021-02-09 16:50 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-trivial, jfreimann, Michael S. Tsirkin, Laurent Vivier,
quintela
CC: Michael
On 06/02/2021 13:39, Laurent Vivier wrote:
> failover_add_primary() calls qdev_device_add() and doesn't unref
> the device. Because of that, when the device is unplugged a reference
> is remaining and prevents the cleanup of the object.
>
> This prevents to be able to plugin back the failover primary device,
> with errors like:
>
> (qemu) device_add vfio-pci,host=0000:41:00.0,id=hostdev0,bus=root.3,failover_pair_id=net0
> (qemu) device_del hostdev0
>
> We can check with "info qtree" and "info pci" that the device has been removed, and then:
>
> (qemu) device_add vfio-pci,host=0000:41:00.0,id=hostdev1,bus=root.3,failover_pair_id=net0
> Error: vfio 0000:41:00.0: device is already attached
> (qemu) device_add vfio-pci,host=0000:41:00.0,id=hostdev0,bus=root.3,failover_pair_id=net0
> qemu-kvm: Duplicate ID 'hostdev0' for device
>
> Fixes: 21e8709b29cd ("failover: Remove primary_dev member")
> Cc: quintela@redhat.com
> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
> ---
> hw/net/virtio-net.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
> index 5150f295e8c5..1c5af08dc556 100644
> --- a/hw/net/virtio-net.c
> +++ b/hw/net/virtio-net.c
> @@ -862,6 +862,8 @@ static void failover_add_primary(VirtIONet *n, Error **errp)
> 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");
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/2] failover: trivial cleanup and fix
2021-02-06 12:39 [PATCH 0/2] failover: trivial cleanup and fix Laurent Vivier
2021-02-06 12:39 ` [PATCH 1/2] pci: cleanup failover sanity check Laurent Vivier
2021-02-06 12:39 ` [PATCH 2/2] virtio-net: add missing object_unref() Laurent Vivier
@ 2021-02-10 13:40 ` Laurent Vivier
2 siblings, 0 replies; 9+ messages in thread
From: Laurent Vivier @ 2021-02-10 13:40 UTC (permalink / raw)
To: qemu-devel, Michael S. Tsirkin
Cc: qemu-trivial, jfreimann, Laurent Vivier, quintela
On 06/02/2021 13:39, Laurent Vivier wrote:
> The first patch removes a duplicate assignment to allow_unplug_during_migrati=
> on,
> and simplify the code.
>
> The second patch fixes a dangling object in failover_add_primary() that preve=
> nts
> to cleanup the internal structure after the object has been unplugged.
>
> Laurent Vivier (2):
> pci: cleanup failover sanity check
> virtio-net: add missing object_unref()
I can collect these two patches via the trivial branch if there will be no PR for virtio
or PCI soon.
Michael?
Thanks,
Laurent
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2021-02-10 13:41 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-02-06 12:39 [PATCH 0/2] failover: trivial cleanup and fix Laurent Vivier
2021-02-06 12:39 ` [PATCH 1/2] pci: cleanup failover sanity check Laurent Vivier
2021-02-06 14:32 ` Laurent Vivier
2021-02-08 8:42 ` Jens Freimann
2021-02-09 16:49 ` Laurent Vivier
2021-02-06 12:39 ` [PATCH 2/2] virtio-net: add missing object_unref() Laurent Vivier
2021-02-08 8:45 ` Jens Freimann
2021-02-09 16:50 ` Laurent Vivier
2021-02-10 13:40 ` [PATCH 0/2] failover: trivial cleanup and fix Laurent Vivier
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).