From 142a24a10b1551c5885f66ef7f7ce48a63dfd193 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Sun, 3 May 2015 14:47:28 +0200 Subject: [PATCH] lvm2: better workaround for missing mallinfo on musl Signed-off-by: Daniel Golle --- utils/lvm2/patches/003-no-mallinfo.patch | 37 +++++++++++++++++------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/utils/lvm2/patches/003-no-mallinfo.patch b/utils/lvm2/patches/003-no-mallinfo.patch index 13372362d..e81dbe9e4 100644 --- a/utils/lvm2/patches/003-no-mallinfo.patch +++ b/utils/lvm2/patches/003-no-mallinfo.patch @@ -1,13 +1,28 @@ -Index: LVM2.2.02.118/lib/mm/memlock.c +Index: LVM2.2.02.119/lib/mm/memlock.c =================================================================== ---- LVM2.2.02.118.orig/lib/mm/memlock.c -+++ LVM2.2.02.118/lib/mm/memlock.c -@@ -137,7 +137,7 @@ static void _touch_memory(void *mem, siz +--- LVM2.2.02.119.orig/lib/mm/memlock.c ++++ LVM2.2.02.119/lib/mm/memlock.c +@@ -161,12 +161,15 @@ static void _allocate_memory(void) + * memory on free(), this is good enough for our purposes. + */ + while (missing > 0) { ++#ifdef __GLIBC__ + struct mallinfo inf = mallinfo(); + hblks = inf.hblks; ++#endif - static void _allocate_memory(void) - { --#ifndef VALGRIND_POOL -+#if defined(__GLIBC__) && !defined(VALGRIND_POOL) - void *stack_mem; - struct rlimit limit; - int i, area = 0, missing = _size_malloc_tmp, max_areas = 32, hblks; + if ((areas[area] = malloc(_size_malloc_tmp))) + _touch_memory(areas[area], _size_malloc_tmp); + ++#ifdef __GLIBC__ + inf = mallinfo(); + + if (hblks < inf.hblks) { +@@ -179,6 +182,7 @@ static void _allocate_memory(void) + ++ area; + missing -= _size_malloc_tmp; + } ++#endif + + if (area == max_areas && missing > 0) { + /* Too bad. Warn the user and proceed, as things are