Am 28.01.2019 um 17:12 hat Daniel P. Berrangé geschrieben: > On Mon, Jan 28, 2019 at 04:37:50PM +0100, Kevin Wolf wrote: > > Am 28.01.2019 um 16:15 hat Anton Kuchin geschrieben: > > > This option is broken since a6baa60807 in v2.9 and returns mostly > > > zeroes instead of real stats because actual querring of BlockStats > > > that resides in blk is missing. > > > > > > And it makes no sense because with this option BlockDriverState-s > > > are iterated but BlockAcctStats belong to BlockBackend and not BDS > > > since 7f0e9da6f13 in v2.5 > > > > > > Signed-off-by: Anton Kuchin <antonkuc...@yandex-team.ru> > > > > Isn't query-nodes the only way to get wr_highest_offset for the protocol > > layer? oVirt depends on this, as far as I know. > > Libvirt just invokes 'query-blockstats' with no arguments, so is not > relying on 'query-nodes' working. Given that libvirt doesn't use it, > it doesn't seem like this is relevant for oVirt unless they were > using QMP passthrough from libvirt. That this has been broken > since v2.9 though rather suggests oVirt doesn't use it.
It's not broken at all. The type of the return value is just a bit messy because we mix statistics from the device with statistics from the nodes. query-nodes=true can't return device statistics, but the respective fields aren't optional in the schema either, so it just puts 0 there. This is ugly, but if you know which information you can use, it works fine, so cleaning it up was never considered to have a good justification for breaking compatibility. In any case, wr_highest_offset is part of the node statistics and it contains the correct value for each node. Kevin