|
From: | Anthony Liguori |
Subject: | [Qemu-devel] Re: [PATCH] net: delay peer host device delete |
Date: | Mon, 20 Sep 2010 15:15:45 -0500 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.12) Gecko/20100826 Lightning/1.0b1 Thunderbird/3.0.7 |
On 09/20/2010 02:37 PM, Michael S. Tsirkin wrote:
On Mon, Sep 20, 2010 at 02:22:18PM -0500, Anthony Liguori wrote:On 09/20/2010 01:59 PM, Michael S. Tsirkin wrote:You can also initiate the unplug from the OS without the ACPI event ever happening. I suspect that in our current implementation, that means that we'll automatically delete the device which may have strange effects on management tools. So it probably makes sense for our interface to present the same procedure. What do you think? Regards, Anthony LiguoriWe seem to have two discussions here. you speak about how an ideal hot plug interface will look. This can involve new commands etc. I speak about fixing existing ones so qemu and/or guest won't crash.To be fair, existing qemu won't crash if you do: (qemu) device_del<device> Use info_qtree to notice when device goes away (qemu) netdev_del<backend>Asking libvirt to busy loop polling the monitor sounds like a really bad situation: note that guest is blocked from doing any io while monitor is used, so it may in fact prevent it from making progress. Right?
With a busy loop? No, the guest will always make some progress because we drop back to the main loop. But that's besides the point really. libvirt can just do a usleep() when polling.
Yes, this interface sucks but that's the interface we have today.
So why can't we let management do netdev_del and have it take effect when this becomes possible?
You're making netdev_del be a semantic request that a network backend is eventually deleted after some guest controlled period of time.
If libvirt is trying to do useful things like manage a limit set of resources (maybe VFs using SR-IOV passthrough), then libvirt needs to know when it can reassign a VF to another guest. But now it can't do that after it does netdev_del. Is it supposed to poll to figure out when it can do it?
You're trying to come up with a workaround for the fact that libvirt is making bad assumptions.BTW, even if it is, I don't think we should be crashing qemu or guest.
That's certainly true. But that's a different patch.
That's wrong. We either need to fix libvirt to not make bad assumptions or we need to provide better interfaces for libvirt to use if the current interfaces aren't desirable. Regards, Anthony LiguoriThis requires fixing existing commands, unless we can't fix them at all - which is demonstrably not the case.But frankly, most command semantics are completely ad hock and not well undefined, in my mind it's better to define them to accomodate existing users.
Okay, let's give them an interface they actually want. Forcing them to poll for when a netdev is actually removed is probably not what they actually want.
Regards, Anthony Liguori
[Prev in Thread] | Current Thread | [Next in Thread] |