On 12/13/2012 07:44 PM, Eric Blake wrote:
On 12/13/2012 05:40 PM, Laine Stump wrote:
> When a network device's bridge connection is changed by
> virDomainUpdateDevice, libvirt first removes the netdev's tap from its
> old bridge, then adds it to the new bridge. Sometimes, due to a
> network being destroyed while a guest device is still attached, the
> tap may already be "removed" from the old bridge (or the old bridge
> may not even exist any more); the existing code was needlessly failing
> the update when this happened, making it impossible to recover from
> the situation without completely detaching (i.e. removing) the netdev
> from the guest and re-attaching.
>
> Instead of failing the entire operation when removal of the tap from
> the old bridge fails, this patch changes qemuDomainChangeNetBridge to
> just log a warning and continue, allowing a reasonable recover from
> the situation.
>
> (you'll appreciate this change if you ever accidentally destroy a
> network while your guests are still using it).
Hmm, I think that may have happened to me while testing dnsmasq fixes
lately, and I probably just chalked it up to user error...
Depends on your definition of user error :-) If you stop and start a
network that has guests attached, the guests will not be reattached to
the bridge. In order to restore proper operation, you'll need to
update-device each network device moving it to a different bridge, then
back to the original.
> ---
> src/qemu/qemu_hotplug.c | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
Matches the commit message, which makes sense. ACK.
Pushed. Thanks!