Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> --- 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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list