On 2/3/2016 6:42 AM, Leon Romanovsky wrote: > From: Leon Romanovsky <leonro@xxxxxxxxxxxx> > > Setting the environment variable RDMAV_HUGEPAGES_SAFE tells the library > to check the underlying page size used by the kernel for memory regions. > This is required if an application uses huge pages either directly or > indirectly via a library such as libhugetlbfs. > > The check of this variable was performed at the first call to > ibv_fork_init. This caused to unpredicted behavior in complex > applications with multiple underlying libraries. > > The proposed change will allow support of huge pages without relying on > ibv_fork_init calls order. Thanks, applied. > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx> > --- > src/memory.c | 8 +++----- > 1 file changed, 3 insertions(+), 5 deletions(-) > > diff --git a/src/memory.c b/src/memory.c > index e9d1eecd9eab..89509c6e356f 100644 > --- a/src/memory.c > +++ b/src/memory.c > @@ -140,6 +140,9 @@ int ibv_fork_init(void) > int ret; > unsigned long size; > > + if (getenv("RDMAV_HUGEPAGES_SAFE")) > + huge_page_enabled = 1; > + > if (mm_root) > return 0; > > @@ -153,11 +156,6 @@ int ibv_fork_init(void) > if (posix_memalign(&tmp, page_size, page_size)) > return ENOMEM; > > - if (getenv("RDMAV_HUGEPAGES_SAFE")) > - huge_page_enabled = 1; > - else > - huge_page_enabled = 0; > - > if (huge_page_enabled) { > size = get_page_size(tmp); > tmp_aligned = (void *) ((uintptr_t) tmp & ~(size - 1)); >
Attachment:
signature.asc
Description: OpenPGP digital signature