On 01/04/2011 12:37 PM, Laine Stump wrote:
It's simple enough to put a bit of extra logic at the point where
we
make that decision. I see 3 possibilities:
1) default - use vhost-net if it's loaded, don't if it isn't (current
behavior)
2) require - use vhost-net if it's loaded, and refuse to start the guest
if it isn't (for those who want
to be 100% sure they're using it)
3) disable - don't use vhost-net, whether or not it's loaded (to disable
it, eg in case a compatibility problem
is found between vhost-net and some particular guest)
I agree with these three modes.
2) Another possibility would be to define a new sub-element
of<interface>, called "<driver>", similar
to what's done in the storage device XML. In the future, other
backend driver-related items could be placed there:
<devices>
<interface type='network'>
<source network='default'/>
<model type='virtio'/>
<driver vhost='default|require|disable'/> (or
"mode='default|kernel|user'")
</interface>
</devices>
Lumping it all as attributes of <driver> makes the most sense to me,
given the similarity to the comparable number of attributes under
<disk>/<driver> (name, type, cache, error_policy; and the current talk
of adding another attribute for qemu aio policy).
So, any opinions on these three possibilities (or an undescribed
4th?)
What about the naming? I'm open to suggestions!
So count my vote for option 2 for where to stick the choice. As for the
option names, my preference is in this order:
mode=default|kernel|user - either way, there is some virtio going on,
but this makes it clear when a kernel module is needed, leaving the name
'vhost' out of the picture (since it is merely an implementation detail
of how the kernel provides virtio)
vhost=default|require|disable - makes it clear that we are requiring
vhost support, but the use of a kernel module becomes implicit (you have
to know that vhost implies kernel)
vhost=default|on|off - shorter names, but creates confusion (vhost=on
means the guest will fail to start if vhost is _off_ in the kernel).
But I'm not hard-set on my choice for option 2 out of the 3, or for the
option naming of default|kernel|user, so feel free to use a different
option if you get votes in a different direction.
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org