To reply to myself, I see that the sr-iov pool is initialized by
networkCreateInterfacePool in network/bridge_driver.c, and it looks like
ports are allocated by networkAllocatePort. The latter looks for a
device with 0 connections as defined by
netdef->forward.ifs[i].connections, and later bumps that count if the
device is successfully allocated.
So it seems the answer to my question is that libvirt does maintain this
state in memory only, and does not try to re-create it if restarted. As
such I don't think there's any way to recover from my situation
currently short of shutting down everything :(.
networkCreateInterfacePool iterates over all the vf's while configuring
the pool. Would there by any way for it to check to see if a vf is
already is use while doing so, and initialize connections to 1 so it
won't be used until the running vm releases it, or at least generate a
warning that the vf is in use and *not* add it to the pool?
Thanks...
Show replies by date