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

Osier Yang jyang at redhat.com
Thu Dec 15 02:20:06 UTC 2011


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
>
> s/sensiable/sensible/
>
>> 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);
>>               continue;
>> +        }
>
> Awfully short patch compared to the commit message :)

Yeah, per the PCI device hotplug is awfull. :)
>
> Sorry for taking so long to review, and:
>
> ACK.
>

Thanks, pushed.

Regards,
Osier




More information about the libvir-list mailing list