mirror of
git://sourceware.org/git/lvm2.git
synced 2025-02-10 17:57:54 +03:00
mm: use mallinfo2 when available
Switch to mallinfo2() from a deprecated mallinfo() glibc call since struct size members where to small for 64b CPUs.
This commit is contained in:
parent
8370d117d7
commit
b553bf6fa8
@ -1,5 +1,6 @@
|
|||||||
Version 2.03.17 -
|
Version 2.03.17 -
|
||||||
===============================
|
===============================
|
||||||
|
Switch to use mallinfo2 and use it only with glibc.
|
||||||
Error out in lvm shell if using a cmd argument not supported in the shell.
|
Error out in lvm shell if using a cmd argument not supported in the shell.
|
||||||
Fix lvm shell's lastlog command to report previous pre-command failures.
|
Fix lvm shell's lastlog command to report previous pre-command failures.
|
||||||
Extend VDO and VDOPOOL without flushing and locking fs.
|
Extend VDO and VDOPOOL without flushing and locking fs.
|
||||||
|
@ -167,7 +167,8 @@ static void _allocate_memory(void)
|
|||||||
*/
|
*/
|
||||||
void *stack_mem;
|
void *stack_mem;
|
||||||
struct rlimit limit;
|
struct rlimit limit;
|
||||||
int i, area = 0, missing = _size_malloc_tmp, max_areas = 32, hblks;
|
int i, area = 0, missing = _size_malloc_tmp, max_areas = 32;
|
||||||
|
size_t hblks;
|
||||||
char *areas[max_areas];
|
char *areas[max_areas];
|
||||||
|
|
||||||
/* Check if we could preallocate requested stack */
|
/* Check if we could preallocate requested stack */
|
||||||
@ -180,6 +181,12 @@ static void _allocate_memory(void)
|
|||||||
}
|
}
|
||||||
/* FIXME else warn user setting got ignored */
|
/* FIXME else warn user setting got ignored */
|
||||||
|
|
||||||
|
#ifdef HAVE_MALLINFO2
|
||||||
|
/* Prefer mallinfo2 call when avaialble with newer glibc */
|
||||||
|
#define MALLINFO mallinfo2
|
||||||
|
#else
|
||||||
|
#define MALLINFO mallinfo
|
||||||
|
#endif
|
||||||
/*
|
/*
|
||||||
* When a brk() fails due to fragmented address space (which sometimes
|
* When a brk() fails due to fragmented address space (which sometimes
|
||||||
* happens when we try to grab 8M or so), glibc will make a new
|
* happens when we try to grab 8M or so), glibc will make a new
|
||||||
@ -191,13 +198,13 @@ static void _allocate_memory(void)
|
|||||||
* memory on free(), this is good enough for our purposes.
|
* memory on free(), this is good enough for our purposes.
|
||||||
*/
|
*/
|
||||||
while (missing > 0) {
|
while (missing > 0) {
|
||||||
struct mallinfo inf = mallinfo();
|
struct MALLINFO inf = MALLINFO();
|
||||||
hblks = inf.hblks;
|
hblks = inf.hblks;
|
||||||
|
|
||||||
if ((areas[area] = malloc(_size_malloc_tmp)))
|
if ((areas[area] = malloc(_size_malloc_tmp)))
|
||||||
_touch_memory(areas[area], _size_malloc_tmp);
|
_touch_memory(areas[area], _size_malloc_tmp);
|
||||||
|
|
||||||
inf = mallinfo();
|
inf = MALLINFO();
|
||||||
|
|
||||||
if (hblks < inf.hblks) {
|
if (hblks < inf.hblks) {
|
||||||
/* malloc cheated and used mmap, even though we told it
|
/* malloc cheated and used mmap, even though we told it
|
||||||
|
Loading…
x
Reference in New Issue
Block a user