On Wed, Jul 07, 2021 at 11:06:05PM +0300, Dmitry Kozlyuk wrote: > > get_hugepage_dir() was implemented in such a way that a --huge-dir option > > had to exactly match the mountpoint, but there's no reason for this > > restriction. Fix the implementation to allow a sub-directory within a > > suitable hugetlbfs mountpoint to be specified. > > > > Signed-off-by: John Levon <john.le...@nutanix.com> > > --- > > lib/eal/linux/eal_hugepage_info.c | 25 +++++++++++++++++++------ > > 1 file changed, 19 insertions(+), 6 deletions(-) > > > > diff --git a/lib/eal/linux/eal_hugepage_info.c > > b/lib/eal/linux/eal_hugepage_info.c > > index d97792cad..d7e9918f8 100644 > > --- a/lib/eal/linux/eal_hugepage_info.c > > +++ b/lib/eal/linux/eal_hugepage_info.c > > @@ -226,16 +226,29 @@ get_hugepage_dir(uint64_t hugepage_sz, char *hugedir, > > int len) > > default_size = get_default_hp_size(); > > > > while (fgets(buf, sizeof(buf), fd)){ > > + const char *dir; > > + > > if (rte_strsplit(buf, sizeof(buf), splitstr, _FIELDNAME_MAX, > > split_tok) != _FIELDNAME_MAX) { > > RTE_LOG(ERR, EAL, "Error parsing %s\n", proc_mounts); > > break; /* return NULL */ > > } > > > > - /* we have a specified --huge-dir option, only examine that dir > > */ > > - if (internal_conf->hugepage_dir != NULL && > > - strcmp(splitstr[MOUNTPT], > > internal_conf->hugepage_dir) != 0) > > - continue; > > + dir = splitstr[MOUNTPT]; > > + > > + /* > > + * If a --huge-dir option has been specified, only examine > > + * mounts that contain that directory, and make sure to return > > + * the directory, not the mount. > > + */ > > + if (internal_conf->hugepage_dir != NULL) { > > + if (strncmp(internal_conf->hugepage_dir, > > + splitstr[MOUNTPT], > > + strlen(splitstr[MOUNTPT])) != 0) > > + continue; > > + > > + dir = internal_conf->hugepage_dir; > > + } > > Suppose there are /mnt/huge and /mnt/huge-2M mounted with -o pagesize=2M. > If --huge-dir=/mnt/huge-2M is specified, this code will select /mnt/huge.
Yeah, good spot. I'll change it to prefer closer matches or something. > The code would be shorter with `splitstr[MOUNTPT]` -> `dir`. Sure. regards john