On Mon, Feb 15, 2021 at 19:20:25 +0100, Pavel Hrdina wrote:
> On Mon, Feb 15, 2021 at 06:27:51PM +0100, Peter Krempa wrote:
> > The -2 value is misleading because if 'qemuAgentFSFreeze' fails it
> > doesn't necessarily mean that the command was sent to the agent.
> > 
> > Since callers don't care about the -2 value specifically, remove it.
> 
> In addition this indirectly fixes virDomainFSFreeze public API where
> we return result of qemuSnapshotFSFreeze directly. Now we comply with
> the API description.

Luckily -2 happens only internally, so we never broke any public API
promise:

This is caused by virNetServerProgramDispatchCall treating any negative
value as error and transporting it over RPC and then
virNetClientProgramCall in the client returning -1 if the returned reply
is of VIR_NET_ERROR type.

Thread 1 "virsh" hit Breakpoint 1, virDomainFSFreeze 
(dom=dom@entry=0x55555569b550, mountpoints=0x0, nmountpoints=0, 
flags=flags@entry=0) at ../../../libvirt/src/libvirt-domain.c:11327
11327   {
(gdb) next
11328       VIR_DOMAIN_DEBUG(dom, "mountpoints=%p, nmountpoints=%d, flags=0x%x",
(gdb)
11331       virResetLastError();
(gdb)
11333       virCheckDomainReturn(dom, -1);
(gdb)
11334       virCheckReadOnlyGoto(dom->conn->flags, error);
(gdb)
11335       virCheckNonNullArrayArgGoto(mountpoints, nmountpoints, error);
(gdb)
11337       if (dom->conn->driver->domainFSFreeze) {
(gdb)
11338           int ret = dom->conn->driver->domainFSFreeze(
(gdb)
11340           if (ret < 0)
(gdb) p ret
$1 = -1
(gdb) c
Continuing.
error: Unable to freeze filesystems
error: internal error: unable to execute QEMU agent command 
'guest-fsfreeze-freeze': The command guest-fsfreeze-freeze has been disabled 
for this instance

Reply via email to