Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/qemu/qemu_driver.c | 43 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 1191255..4d6a300 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -16868,6 +16868,48 @@ qemuDomainFSThaw(virDomainPtr dom,
}
+static int
+qemuNodeGetFreePages(virConnectPtr conn,
+ unsigned int npages,
+ unsigned int *pages,
+ int startCell,
+ unsigned int cellCount,
+ unsigned long long *counts,
+ unsigned int flags)
+{
+ int ret = -1;
+ int cell;
+ size_t i, ncounts = 0;
+
+ virCheckFlags(0, ret);
+
+ if (virNodeGetFreePagesEnsureACL(conn) < 0)
+ return ret;
+
+ for (cell = startCell; cell < (int) (startCell + cellCount); cell++) {
+ for (i = 0; i < npages; i++) {
+ unsigned int page_size = pages[i];
+ unsigned int page_free;
+
+ if (virNumaGetHugePageInfo(cell, page_size, NULL, &page_free) < 0)
+ goto cleanup;
+
+ counts[ncounts++] = page_free;
+ }
+ }
+
+ if (!ncounts) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("no suitable info found"));
+ goto cleanup;
+ }
+
+ ret = ncounts;
+ cleanup:
+ return ret;
+}
+
+
static virDriver qemuDriver = {
.no = VIR_DRV_QEMU,
.name = QEMU_DRIVER_NAME,
@@ -17062,6 +17104,7 @@ static virDriver qemuDriver = {
.domainFSThaw = qemuDomainFSThaw, /* 1.2.5 */
.domainGetTime = qemuDomainGetTime, /* 1.2.5 */
.domainSetTime = qemuDomainSetTime, /* 1.2.5 */
+ .nodeGetFreePages = qemuNodeGetFreePages, /* 1.2.6 */
};
--
1.8.5.5