On Wed, Jan 06, 2021 at 02:40:15PM -0300, Daniel Henrique Barboza wrote: > > > On 1/6/21 2:30 PM, Daniel P. Berrangé wrote: > > On Wed, Jan 06, 2021 at 02:24:35PM -0300, Daniel Henrique Barboza wrote: > > > > > > > > > On 1/6/21 8:13 AM, Erik Skultety wrote: > > > > On Wed, Jan 06, 2021 at 08:00:52AM -0300, Daniel Henrique Barboza wrote: > > > > > > > > > > > > > > > On 1/6/21 7:09 AM, Daniel P. Berrangé wrote: > > > > > > On Tue, Jan 05, 2021 at 05:18:13PM -0300, Daniel Henrique Barboza wrote: > > [...] > > > > > > > > > > > > > > This is similar to what we do for the nwfilter-binding and net-port XML > > > > > > where we have an <owner> element present. > > > > > > > > > > > > The complication here is that right now we don't ever touch the nodedev > > > > > > driver when doing host device assignment, and so don't especially want > > > > > > to introduce a dependancy. > > > > > > > > > > One possible alternative would be a new API that operates on hostdevs instead > > > > > of nodedevs. "hostdev-list" would list the devices assigned to any domain, as > > > > > opposed to "nodedev-list" that lists all nodedevs of the host. I'm not sure if this > > > > > differentiation between hostdev and nodedev (i.e. hostdev is a nodedev that is > > > > > assigned to a domain) would be clear enough to users though. We would need to > > > > > document it clearer in the docs. > > > > > > > > Wasn't this about the connection to the nodedev though? E.g. with mdevs we only > > > > have a UUID in the domain XML which doesn't tell you anything about the device > > > > nor its parent and you also can't take the uuid and try finding the > > > > corresponding nodedev entry for it (well, you can hack it so that you construct > > > > the resulting nodedev name). Maybe I'm just misunderstanding the use case > > > > though. > > > > > > This particular case I'm asking for comments is related to PCI hostdevs (namely, > > > SR-IOV virtual functions) that might get removed from the host, while being > > > assigned to a running domain. We don't support that (albeit I posted patches > > > that tries to alleviate the issue in Libvirt), and at the same time we don't > > > provide easy tools for the user to check whether a specific hostdev is > > > assigned to a domain. The user must query the running domains to find out. > > > > This isn't all that much different to other host resources that are given > > to guests. eg if pinning vCPUs 1:1 to pCPUs, the admin/mgmt app has to > > keep track of which pCPUs are used. If assuming host block devices to a > > guest, the admin/mgmt app has to keep track of block devices in use. > > If assigning NICs for dedicated guest use the admin/mgmt app has to keep > > track. etc, etc. > > > > Apps like oVirt, OpenStack, KubeVirt will all do this tracking themselves > > generally. This is especially important when they need to have this usage > > information kept on a separate host so that the schedular can use it > > when deciding which host to place a new guest on. > > > > So, I'm not entirely convinced libvirt needs has a critical need to do > > anything for PCI devices in this respect. > > I agree that whether we implement this or not, this is a feature 'good to have' > at best, that just the average admin that has access to a SR-IOV card and > doesn't have OVirt like apps to manage the VMs will end up using. Not sure how > many ppl out there that fits this profile TBH. > > Definitely nothing that warrants breaking thing to implement. For the adhoc use case we don't especially need to know which VM is using a PCI devices. We just need to know that the device is in use or not. We know if a PCI device is in use because it will be bound to a specific kernel driver whenever assigned. Could we use this perhaps as a way to filter the list of node devs to only show those which are not assigned Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|