[PATCH 0/2] Fix calling of virNetworkUpdate() driver callback

Michal Privoznik posted 2 patches 3 years, 1 month ago
Test syntax-check failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/cover.1614675201.git.mprivozn@redhat.com
There is a newer version of this series
src/libvirt-network.c        | 6 +++---
src/remote/remote_protocol.x | 7 ++++++-
src/remote_protocol-structs  | 2 +-
3 files changed, 10 insertions(+), 5 deletions(-)
[PATCH 0/2] Fix calling of virNetworkUpdate() driver callback
Posted by Michal Privoznik 3 years, 1 month ago
See 2/2 for explanation.

BUT, I am not fully convinced about changing XDR though. In my testing
it did not really show to be that backward compatible. I did the
following tests:

1) run libvirtd unpatched,
2) run libvirtd with just arguments if the callback fixed (i.e. just the
   first hunk of 2/2),
3) run libvirtd with patch 2/2 as is

And also, I repeated the same for split daemon using qemu:///system and
network:///system URIs. I've tested the following command:

  virsh net-update default add dns-txt '<txt name="example" value="example value"/>'

and if I got the following error message:

  Operation not supported: can't update 'ip' section of network 'default'

I knew that arguments are swapped (because 'add' command has value 3,
'dns-txt' section has value 11 and 'ip' section has value 3).

>From the results I've constructed the following tables:

              | libvirtd (case 1) | libvirtd + swap (case 2) | libvirtd + RPC (case 3)
--------------+-------------------+--------------------------+------------------------
client        |         1         |         0                |      0
client + swap |         0         |         1                |      1
client + RPC  |         0         |         1                |      1

Both client and libvirtd were tested for all three cases as described
above; 1 means success (API returned without an error), 0 means the
error message from above was observed. For libvirtd I've tested just
qemu:///system, because network:///system has to yield the same results.

For split daemon (SD) case:

qemu:///system

              | SD (case 1) | SD + swap (case 2) | SD + RPC (case 3)
--------------+-------------+--------------------+------------------
client        |     0       |         0          |      0
client + swap |     1       |         1          |      1
client + RPC  |     1       |         1          |      1


network:///system

              | SD (case 1) | SD + swap (case 2) | SD + RPC (case 3)
--------------+-------------+--------------------+------------------
client        |     1       |         0          |      0
client + swap |     0       |         1          |      1
client + RPC  |     0       |         1          |      1


Therefore, what I am trying to say is, there is no case where plain swap
(= case 2) would not help and including RPC change (= case 3) would
help. Maybe I'm missing something?


Michal Prívozník (2):
  lib: Debug print all arguments of virNetworkUpdate()
  lib: Fix calling of virNetworkUpdate() driver callback

 src/libvirt-network.c        | 6 +++---
 src/remote/remote_protocol.x | 7 ++++++-
 src/remote_protocol-structs  | 2 +-
 3 files changed, 10 insertions(+), 5 deletions(-)

-- 
2.26.2

Re: [PATCH 0/2] Fix calling of virNetworkUpdate() driver callback
Posted by Michal Privoznik 3 years, 1 month ago
On 3/2/21 10:12 AM, Michal Privoznik wrote:
 >

Polite ping.

Michal