|
|
2d1356 |
From fdf02246eb2837e144b1929887af94aa9ce9a77e Mon Sep 17 00:00:00 2001
|
|
|
2d1356 |
Message-Id: <fdf02246eb2837e144b1929887af94aa9ce9a77e@dist-git>
|
|
|
2d1356 |
From: Peter Krempa <pkrempa@redhat.com>
|
|
|
2d1356 |
Date: Thu, 26 May 2016 12:54:53 +0200
|
|
|
2d1356 |
Subject: [PATCH] qemu: driver: Separate bulk stats worker for block devices
|
|
|
2d1356 |
|
|
|
2d1356 |
https://bugzilla.redhat.com/show_bug.cgi?id=1339963
|
|
|
2d1356 |
|
|
|
2d1356 |
Extract the fallback path that reloads the stats from disk into a
|
|
|
2d1356 |
separate function.
|
|
|
2d1356 |
|
|
|
2d1356 |
(cherry picked from commit 3aa5d51a9530a8737ca584b393c29297dd9bbc37)
|
|
|
2d1356 |
---
|
|
|
2d1356 |
src/qemu/qemu_driver.c | 58 ++++++++++++++++++++++++++++++++------------------
|
|
|
2d1356 |
1 file changed, 37 insertions(+), 21 deletions(-)
|
|
|
2d1356 |
|
|
|
2d1356 |
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
|
|
|
2d1356 |
index e403103..1075237 100644
|
|
|
2d1356 |
--- a/src/qemu/qemu_driver.c
|
|
|
2d1356 |
+++ b/src/qemu/qemu_driver.c
|
|
|
2d1356 |
@@ -19329,6 +19329,40 @@ do { \
|
|
|
2d1356 |
goto cleanup; \
|
|
|
2d1356 |
} while (0)
|
|
|
2d1356 |
|
|
|
2d1356 |
+/* refresh information by opening images on the disk */
|
|
|
2d1356 |
+static int
|
|
|
2d1356 |
+qemuDomainGetStatsOneBlockFallback(virQEMUDriverPtr driver,
|
|
|
2d1356 |
+ virQEMUDriverConfigPtr cfg,
|
|
|
2d1356 |
+ virDomainObjPtr dom,
|
|
|
2d1356 |
+ virDomainStatsRecordPtr record,
|
|
|
2d1356 |
+ int *maxparams,
|
|
|
2d1356 |
+ virStorageSourcePtr src,
|
|
|
2d1356 |
+ size_t block_idx)
|
|
|
2d1356 |
+{
|
|
|
2d1356 |
+ int ret = -1;
|
|
|
2d1356 |
+
|
|
|
2d1356 |
+ if (virStorageSourceIsEmpty(src))
|
|
|
2d1356 |
+ return 0;
|
|
|
2d1356 |
+
|
|
|
2d1356 |
+ if (qemuStorageLimitsRefresh(driver, cfg, dom, src) < 0) {
|
|
|
2d1356 |
+ virResetLastError();
|
|
|
2d1356 |
+ return 0;
|
|
|
2d1356 |
+ }
|
|
|
2d1356 |
+
|
|
|
2d1356 |
+ if (src->allocation)
|
|
|
2d1356 |
+ QEMU_ADD_BLOCK_PARAM_ULL(record, maxparams, block_idx,
|
|
|
2d1356 |
+ "allocation", src->allocation);
|
|
|
2d1356 |
+ if (src->capacity)
|
|
|
2d1356 |
+ QEMU_ADD_BLOCK_PARAM_ULL(record, maxparams, block_idx,
|
|
|
2d1356 |
+ "capacity", src->capacity);
|
|
|
2d1356 |
+ if (src->physical)
|
|
|
2d1356 |
+ QEMU_ADD_BLOCK_PARAM_ULL(record, maxparams, block_idx,
|
|
|
2d1356 |
+ "physical", src->physical);
|
|
|
2d1356 |
+ ret = 0;
|
|
|
2d1356 |
+ cleanup:
|
|
|
2d1356 |
+ return ret;
|
|
|
2d1356 |
+}
|
|
|
2d1356 |
+
|
|
|
2d1356 |
|
|
|
2d1356 |
static int
|
|
|
2d1356 |
qemuDomainGetStatsOneBlock(virQEMUDriverPtr driver,
|
|
|
2d1356 |
@@ -19358,28 +19392,10 @@ qemuDomainGetStatsOneBlock(virQEMUDriverPtr driver,
|
|
|
2d1356 |
QEMU_ADD_BLOCK_PARAM_UI(record, maxparams, block_idx, "backingIndex",
|
|
|
2d1356 |
backing_idx);
|
|
|
2d1356 |
|
|
|
2d1356 |
+ /* use fallback path if data is not available */
|
|
|
2d1356 |
if (!stats || !alias || !(entry = virHashLookup(stats, alias))) {
|
|
|
2d1356 |
- if (virStorageSourceIsEmpty(src)) {
|
|
|
2d1356 |
- ret = 0;
|
|
|
2d1356 |
- goto cleanup;
|
|
|
2d1356 |
- }
|
|
|
2d1356 |
-
|
|
|
2d1356 |
- if (qemuStorageLimitsRefresh(driver, cfg, dom, src) < 0) {
|
|
|
2d1356 |
- virResetLastError();
|
|
|
2d1356 |
- ret = 0;
|
|
|
2d1356 |
- goto cleanup;
|
|
|
2d1356 |
- }
|
|
|
2d1356 |
-
|
|
|
2d1356 |
- if (src->allocation)
|
|
|
2d1356 |
- QEMU_ADD_BLOCK_PARAM_ULL(record, maxparams, block_idx,
|
|
|
2d1356 |
- "allocation", src->allocation);
|
|
|
2d1356 |
- if (src->capacity)
|
|
|
2d1356 |
- QEMU_ADD_BLOCK_PARAM_ULL(record, maxparams, block_idx,
|
|
|
2d1356 |
- "capacity", src->capacity);
|
|
|
2d1356 |
- if (src->physical)
|
|
|
2d1356 |
- QEMU_ADD_BLOCK_PARAM_ULL(record, maxparams, block_idx,
|
|
|
2d1356 |
- "physical", src->physical);
|
|
|
2d1356 |
- ret = 0;
|
|
|
2d1356 |
+ ret = qemuDomainGetStatsOneBlockFallback(driver, cfg, dom, record,
|
|
|
2d1356 |
+ maxparams, src, block_idx);
|
|
|
2d1356 |
goto cleanup;
|
|
|
2d1356 |
}
|
|
|
2d1356 |
|
|
|
2d1356 |
--
|
|
|
2d1356 |
2.8.3
|
|
|
2d1356 |
|