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.