[libvirt] [PATCH] qemu: Make virFileFindHugeTLBFS fault tolerant
Jim Fehlig
jfehlig at suse.com
Wed Aug 6 15:16:30 UTC 2014
Michal Privoznik wrote:
> Since commit be0782e1 we are parsing /proc/meminfo to find out the
> default huge page size. However, if the host we are running at does
> not support any huge pages (e.g. CONFIG_HUGETLB_PAGE is turned off),
> we will not successfully parse the meminfo file and hence the whole
> qemu driver init process fails. Moreover, the default huge page size
> is needed if and only if there's at least one hugetlbfs mount point.
> So the fix consists of moving the virFileGetDefaultHugepageSize
> function call after the first hugetlbfs mount point is found.
>
> With this fix, we fail to start with one or more hugetlbfs mounts and
> malformed meminfo file, but that's expected (how can one mount
> hugetlbfs without kernel supporting huge pages?). Workaround in that
> case is to umount all the hugetlbfs mounts.
>
Makes sense.
> Reported-by: Jim Fehlig <jfehlig at suse.com>
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
> src/util/virfile.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/src/util/virfile.c b/src/util/virfile.c
> index 9863fd0..f9efc65 100644
> --- a/src/util/virfile.c
> +++ b/src/util/virfile.c
> @@ -2990,10 +2990,7 @@ virFileFindHugeTLBFS(virHugeTLBFSPtr *ret_fs,
> char mntbuf[1024];
> virHugeTLBFSPtr fs = NULL;
> size_t nfs = 0;
> - unsigned long long default_hugepagesz;
> -
> - if (virFileGetDefaultHugepageSize(&default_hugepagesz) < 0)
> - goto cleanup;
> + unsigned long long default_hugepagesz = 0;
>
> if (!(f = setmntent(PROC_MOUNTS, "r"))) {
> virReportSystemError(errno,
> @@ -3019,6 +3016,10 @@ virFileFindHugeTLBFS(virHugeTLBFSPtr *ret_fs,
> if (virFileGetHugepageSize(tmp->mnt_dir, &tmp->size) < 0)
> goto cleanup;
>
> + if (!default_hugepagesz &&
> + virFileGetDefaultHugepageSize(&default_hugepagesz) < 0)
> + goto cleanup;
> +
> tmp->deflt = tmp->size == default_hugepagesz;
> }
>
And it fixes the issue for me, thanks! ACK #2 :-).
Regards,
Jim
More information about the libvir-list
mailing list