From: Peter Krempa <pkrempa@redhat.com> It's called just from qemuMonitorJSONBlockStatsUpdateCapacityBlockdevWorker. Merging it in makes the code much simpler especially when combined with a change to APIs that can't fail. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_monitor_json.c | 48 ++++++++++-------------------------- 1 file changed, 13 insertions(+), 35 deletions(-) diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 7b7d446b3a..44d7a35874 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -2584,36 +2584,6 @@ qemuMonitorJSONGetAllBlockStatsInfo(qemuMonitor *mon, } -static int -qemuMonitorJSONBlockStatsUpdateCapacityData(virJSONValue *image, - const char *name, - GHashTable *stats, - qemuBlockStats **entry) -{ - qemuBlockStats *bstats; - - if (!(bstats = virHashLookup(stats, name))) { - bstats = qemuBlockStatsNew(); - g_hash_table_insert(stats, g_strdup(name), bstats); - } - - if (entry) - *entry = bstats; - - /* failures can be ignored after this point */ - if (virJSONValueObjectGetNumberUlong(image, "virtual-size", - &bstats->capacity) < 0) - return 0; - - /* if actual-size is missing, image is not thin provisioned */ - if (virJSONValueObjectGetNumberUlong(image, "actual-size", - &bstats->physical) < 0) - bstats->physical = bstats->capacity; - - return 0; -} - - static int qemuMonitorJSONBlockStatsUpdateCapacityBlockdevWorker(size_t pos G_GNUC_UNUSED, virJSONValue *val, @@ -2631,12 +2601,20 @@ qemuMonitorJSONBlockStatsUpdateCapacityBlockdevWorker(size_t pos G_GNUC_UNUSED, return -1; } - if (qemuMonitorJSONBlockStatsUpdateCapacityData(image, nodename, stats, &entry) < 0) - return -1; + if (!(entry = virHashLookup(stats, nodename))) { + entry = qemuBlockStatsNew(); + g_hash_table_insert(stats, g_strdup(nodename), entry); + } + + /* updating actual size makes sense only when virtual size is present */ + if (virJSONValueObjectGetNumberUlong(image, "virtual-size", &entry->capacity) == 0) { + /* if actual-size is missing, image is not thin provisioned */ + if (virJSONValueObjectGetNumberUlong(image, "actual-size", &entry->physical) < 0) + entry->physical = entry->capacity; + } - if (entry) - ignore_value(virJSONValueObjectGetNumberUlong(val, "write_threshold", - &entry->write_threshold)); + ignore_value(virJSONValueObjectGetNumberUlong(val, "write_threshold", + &entry->write_threshold)); return 1; /* we don't want to steal the value from the JSON array */ } -- 2.51.0