[PATCH 6/8] virDriverFeatureIsGlobal: Handle VIR_DRV_FEATURE_NETWORK_UPDATE_HAS_CORRECT_ORDER
Peter Krempa
pkrempa at redhat.com
Thu Feb 17 11:42:11 UTC 2022
On Thu, Feb 17, 2022 at 10:56:11 +0100, Michal Prívozník wrote:
> On 2/17/22 10:45, Peter Krempa wrote:
> > On Thu, Feb 17, 2022 at 10:39:59 +0100, Michal Prívozník wrote:
> >> On 2/16/22 16:41, Peter Krempa wrote:
> >>> The fix was on RPC level so everything should advertise it.
> >>>
> >>> Signed-off-by: Peter Krempa <pkrempa at redhat.com>
> >>> ---
> >>> src/driver.c | 4 +++-
> >>> 1 file changed, 3 insertions(+), 1 deletion(-)
[...]
> git show -W b0f78d626a18bcecae3a4d165540ab88bfbfc9ee --
> src/libvirt-network.c
>
> You'll see that the public API was given @command and then @section
> arguments, but the callback was called with @section and @command
> (reversed). This went unnoticed because both arguments are of the same
> type (thus RPC serializer didn't report any error) and because the
> public API is called again on the daemon side (during dispatch) so the
> order was swapped again and thus network driver saw arguments in correct
> order. Problem arose only when split daemons were introduced -> suddenly
> the API was called three times (one time at client, one time at
> virtqemud and finally in virnetworkd), so there was imbalance of
> swapping. And yes, if client connected to virtnetworkd directly
> everything worked, because again - two swapps were done.
>
> >
> >>
> >> I'm not objecting to this patch, just trying to shed more light into the
> >> problem.
> >
> > I can update the comment. Actually the idea is that the comment captures
> > the reason for the flag, so it should be acurate.
> >
>
> Yeah, it's just that I'm unable to come with anything better.
How about:
/* Feature flag exposes that the accidental switching of order of
* arguments in the public API trampoline virNetworkUpdate is known.
* Updated clients thus use the correct ordering with an updated
* server. All drivers must signal support for this feature.
*/
More information about the libvir-list
mailing list