with the increased number of version we're supporting and going to support it's going to be time for the introduction
of protocol versioning.

The motivation for this is, that currently if VDSM is sending a message to the guest agent which is not known, it will end up being logged as error on the guest agent side. If the guest agent is sending a message to VDSM which VDSM does not know about this is logged as error as well. While one could argue, that we should remove the error level or remove the logging all together it will not work for older versions though.

My proposed solution is as follows:

By default the guest agent supposes API version 0, which means all until this time implemented messages are supported. The same should be supposed from the VDSM side, by default the API version shall be 0.

Once we're adding a new message (this is the case of FQDN reporting http://gerrit.ovirt.org/#/c/16572/ )
we're going to increase the version with a new release.

Messages which are requiring a higher API version, are not supposed to be sent via the VIO Channels.

The negotiation of the used API version would work like this:

VDSM sends the refresh command on connect to the guest agent VIO Channel with the apiVersion argument. Older version of the guest agent are ignoring these additional parameters, as they are not expected however it won't
fail either on them.
If the guest agent is retrieving an API Version it will either use it, or if it is higher than the maximum known version it will use the guest agent's version. This version is sent as a separate message back to VDSM which then in turn will set the value to the value retrieved by the guest agent. (As long it is greater than 0)

Here are the proposed patch sets:

Guest Side PatchSet: http://gerrit.ovirt.org/#/c/16995
VDSM Side PatchSet: http://gerrit.ovirt.org/#/c/17004/

Please let me know your thoughts about this.
In my opinion are those changes pretty safe and straight forward, and it will allow us to avoid unnecessary messages to be sent between guest and host



Vinzenz Feenstra | Senior Software Engineer
RedHat Engineering Virtualization R & D
Phone: +420 532 294 625
IRC: vfeenstr or evilissimo

Better technology. Faster innovation. Powered by community collaboration.
See how it works at redhat.com

vdsm-devel mailing list

Reply via email to