[libvirt] Network not Persistent

Shradha Shah sshah at solarflare.com
Tue Feb 21 16:32:13 UTC 2012


On 02/21/2012 03:59 PM, Laine Stump wrote:
> On 02/21/2012 07:33 AM, Shradha Shah wrote:
>> On 02/20/2012 06:43 PM, Laine Stump wrote:
>>> On 02/20/2012 12:37 PM, Shradha Shah wrote:
>>>> Hello All,
>>>>
>>>> I am currently working on patches for PCI-passthrough of SRIOV VF's and I am facing an issue with the network definition not being persistent.
>>>>
>>>> I am using a new forward mode = hostdev and the network xml is as follows:
>>>> <network>
>>>>   <name>pci-passthrough-network</name>
>>>>   <uuid>81ff0d90-c91e-6742-64da-4a736edb9a8f</uuid>
>>>>   <forward mode="hostdev">
>>>>     <pf dev="eth2"/>
>>>>   </forward>
>>>> </network>
>>>>
>>>> Command line used is:
>>>> # virsh net-define pci_passthrough_network.xml
>>>>
>>>> The network is defined successfully and I can use it at this point.
>>>>
>>>> But if I restart libvirt after defining the above network, I lose the network definition.
>>>>
>>>> After restart libvirt does not possess any knowledge of the above network.
>>>>
>>>> This does not happen when I use forward mode="bridge".
>>>>
>>>> I have cross referenced the function call path of networkDefine for both the forwarding modes and I can't seem to find the problem.
>>>>
>>>> Is there some function I am missing?
>>> You need to add some logic to networkFindActiveConfigs() to determine if
>>> the network is active.
>> I am not sure if I am missing something but, networkFindActiveConfigs() is called by networkStartup() only.
> 
> Right. And that is called every time libvirtd is restarted. I had read
> your post too quickly and assumed the problem was that the new network
> was no longer marked active after restarting libvirtd, in which case
> this is where you would want to look. But I see from you virsh net-list
> output that the real problem is that the network is no longer *defined*
> after a restart.
> 
>> Currently I am not starting any networks but just defining them and then restarting libvirtd, at which point the pci-passthrough-network dissapears.
>> The commands I am using are as follows:
>>
>> # virsh net-define pci_passthrough_network.xml
>> Network pci-passthrough-network defined from pci_passthrough_network.xml
>>
>> # virsh net-define macvtap_bridge_network.xml
>> Network macvtap-bridge-network defined from macvtap_bridge_network.xml
>>
>> # virsh net-list -all
>> Name                          State      Autostart
>> --------------------------------------------------
>> macvtap-bridge-network       inactive      no        
>> pci-passthrough-network      inactive      no
>>
>> # service libvirtd restart
>> Stopping libvirtd daemon:                                  [  OK  ]
>> Starting libvirtd daemon:                                  [  OK  ]
>>
>> #  virsh net-list -all
>> Name                          State      Autostart
>> --------------------------------------------------
>> macvtap-bridge-network       inactive      no     
> 
> Before you restart libvirtd, is the xml file in place in
> /etc/libvirt/qemu/networks/pci-passthrough-network.xml? And is that file
> still there after libvirtd restarts? If the file is still there but the
> definition doesn't show up in net-list --all, perhaps there is something
> in the xml file that is failing the parse - any log messages in libvirtd?

This was indeed the case. Libvirt was failing to parse the forwarddev on restart.
Bit of a mistake in my code. Now resolved.

Many Thanks,
Regards,
Shradha

> 
> Also, does it behave differently if you start the network before
> restarting libvirtd?
> 
> Beyond this, it's really not possible to help much more without seeing
> the code you're working with.
> 
> 
>>
>> I think its got to do something with the persistent flag of the network object, but I am not sure.
> 
> Well, the persistent flag is set unconditionally by networkDefine for
> all types of networks.
> 
> 




More information about the libvir-list mailing list