[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH RESEND] qemu: Do not free the device from activePciHostdevs if it's in use

On 2011年12月15日 06:57, Eric Blake wrote:
On 11/29/2011 03:23 AM, Osier Yang wrote:
* src/qemu/qemu_hostdev.c (qemuDomainReAttachHostdevDevices):
pciDeviceListFree(pcidevs) in the end free()s the device even if
it's in use by other domain, which can cause rase.

s/rase/a race/


The patch also fixes another problem, there won't be error like
"qemuDomainReAttachHostdevDevices: Not reattaching active
device 0000:00:19.0" in daemon log if some device is in active.
As pciResetDevice and pciReattachDevice won't be called for
the device anymore. This is sensiable as we already reported


error when preparing the device if it's active. Blindly trying
to pciResetDevice&  pciReattachDevice on the device and getting
an error is just redundant.
  src/qemu/qemu_hostdev.c |    4 +++-
  1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/src/qemu/qemu_hostdev.c b/src/qemu/qemu_hostdev.c
index 9137388..60401f0 100644
--- a/src/qemu/qemu_hostdev.c
+++ b/src/qemu/qemu_hostdev.c
@@ -414,8 +414,10 @@ void qemuDomainReAttachHostdevDevices(struct qemud_driver *driver,
          activeDev = pciDeviceListFind(driver->activePciHostdevs, dev);
          if (activeDev&&
-            STRNEQ_NULLABLE(name, pciDeviceGetUsedBy(activeDev)))
+            STRNEQ_NULLABLE(name, pciDeviceGetUsedBy(activeDev))) {
+            pciDeviceListSteal(pcidevs, dev);
+        }

Awfully short patch compared to the commit message :)

Yeah, per the PCI device hotplug is awfull. :)

Sorry for taking so long to review, and:


Thanks, pushed.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]