[libvirt] [PATCH v2 1/6] Introduce virFileFindHugeTLBFS

Michal Privoznik mprivozn at redhat.com
Thu Jul 24 07:34:21 UTC 2014


On 24.07.2014 08:41, Peter Krempa wrote:
> On 07/23/14 21:06, Daniel P. Berrange wrote:
>> On Wed, Jul 23, 2014 at 05:37:17PM +0200, Michal Privoznik wrote:
>>> +int
>>> +virFileFindHugeTLBFS(virHugeTLBFSPtr *ret_fs,
>>> +                     size_t *ret_nfs)
>>> +{
>>> +    int ret = -1;
>>> +    FILE *f = NULL;
>>> +    struct mntent mb;
>>> +    char mntbuf[1024];
>>> +    virHugeTLBFSPtr fs = NULL;
>>> +    size_t nfs = 0;
>>> +    unsigned long long default_hugepagesz;
>>> +
>>> +    if (virFileGetDefaultHugepageSize(&default_hugepagesz) < 0)
>>> +        goto cleanup;
>>> +
>>> +    if (!(f = setmntent(PROC_MOUNTS, "r"))) {
>>> +        virReportSystemError(errno,
>>> +                             _("Unable to open %s"),
>>> +                             PROC_MOUNTS);
>>> +        goto cleanup;
>>> +    }
>>> +
>>> +    while (getmntent_r(f, &mb, mntbuf, sizeof(mntbuf))) {
>>> +        virHugeTLBFSPtr tmp;
>>> +
>>> +        if (STRNEQ(mb.mnt_type, "hugetlbfs"))
>>> +            continue;
>>> +
>>> +        if (VIR_REALLOC_N(fs, nfs + 1) < 0)
>>> +            goto cleanup;
>>> +
>>> +        tmp = &fs[nfs];
>>> +        nfs++;
>>
>> Stilll think we should be using VIR_EXPAND_N here to ensure
>> new space is fully zerod.
> 
> Or perhaps use VIR_APPEND_ELEMENT?

Okay, I'm squashing this in:

diff --git a/src/util/virfile.c b/src/util/virfile.c
index f18a0f5..8ce20f5 100644
--- a/src/util/virfile.c
+++ b/src/util/virfile.c
@@ -3008,11 +3008,10 @@ virFileFindHugeTLBFS(virHugeTLBFSPtr *ret_fs,
         if (STRNEQ(mb.mnt_type, "hugetlbfs"))
             continue;
 
-        if (VIR_REALLOC_N(fs, nfs + 1) < 0)
+        if (VIR_EXPAND_N(fs, nfs, 1) < 0)
             goto cleanup;
 
-        tmp = &fs[nfs];
-        nfs++;
+        tmp = &fs[nfs - 1];
 
         if (VIR_STRDUP(tmp->mnt_dir, mb.mnt_dir) < 0)
             goto cleanup;

Michal




More information about the libvir-list mailing list