
On 4/10/25 2:55 AM, Jiri Denemark wrote:
On Thu, Apr 10, 2025 at 02:58:30 -0400, Laine Stump wrote:
When "original passt" support was added, we decided that we always wanted to reconnect (i.e. restart the passt process) if it was somehow terminated. Generic vhost-user only turns on reconnect if specified in the config, but there is no reason to require this if the other end of the vhost-user socket is a passt process - we know what has happened and what we want to do; no reason to make the default configuration "do the *wrong* thing".
Resolves: https://issues.redhat.com/browse/RHEL-80169
Signed-off-by: Laine Stump <laine@redhat.com> --- src/qemu/qemu_passt.c | 6 ++++++ .../qemuxmlconfdata/net-vhostuser-passt.x86_64-latest.args | 6 +++--- .../schema-reorder-domain-subelements.x86_64-latest.args | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/src/qemu/qemu_passt.c b/src/qemu/qemu_passt.c index bc495eca1e..018630a5de 100644 --- a/src/qemu/qemu_passt.c +++ b/src/qemu/qemu_passt.c @@ -182,6 +182,12 @@ qemuPasstPrepareVhostUser(virDomainObj *vm, */ g_free(net->data.vhostuser->data.nix.path); net->data.vhostuser->data.nix.path = qemuPasstCreateSocketPath(vm, net); + + /* reconnect is always enabled, with timeout always at 5 seconds, when + * using passt + */ + net->data.vhostuser->data.nix.reconnect.enabled = VIR_TRISTATE_BOOL_YES; + net->data.vhostuser->data.nix.reconnect.timeout = 5;
Hmm, shouldn't this be reflected in the XML?
Nope. Actually I thought about this when giving the commit messages a final look before I sent last night/morning - just as with the socket path for the associated character device is hardcoded when vhostuser is being used for passt, the reconnect timeout for the character device is hardcoded, so it's not just a "default", it is the only possible value. I'll reflect that in the commit log. The entire net->data.vhostuser part of the object isn't configurable when vhostuser is being used for passt, the corresponding attributes in <source> aren't allowed in the input XML, and won't be output when the object is formatted.
That is, I would expect a post-parse function to set these defaults.
And the current code overrides user specified settings (either disabling or setting a different timeout), which doesn't is not right.
Except that the user can't set it :-)
Actually, looking at our documentation the <reconnect> it seems we don't even support setting reconnect for vhost-user with passt backend.
Correct. This is the same behavior as for non-vhostuser passt, where we decided that there was no downside to having reconnect always enabled and no reasonable way to explain how or why a user should modify the timeout, so made it always on and always 5 second timeout.
If that's the case, the code is fine as is except for the following nit, which I'd like to see addressed anyway...
And I suggest relacing the 5 seconds timeout with a macro that would also be used in qemuPasstAddNetProps.
Sure, I can do that. Thanks for the quick review!