1
0
mirror of http://git.haproxy.org/git/haproxy.git/ synced 2025-04-07 01:31:35 +00:00

MINOR: pools: move the fault injector to __pool_alloc()

Till now it was limited to objects allocated from the OS which means
it had little use as soon as pools were enabled. Let's move it upper
in the layers so that any code can benefit from fault injection. In
addition this allows to pass a new flag POOL_F_NO_FAIL to disable it
if some callers prefer a no-failure approach.
This commit is contained in:
Willy Tarreau 2021-04-17 16:00:08 +02:00
parent 20f88abad5
commit 207c095098
3 changed files with 6 additions and 4 deletions
include/haproxy
src

View File

@ -80,6 +80,7 @@
/* possible flags for __pool_alloc() */
#define POOL_F_NO_POISON 0x00000001 // do not poison the area
#define POOL_F_MUST_ZERO 0x00000002 // zero the returned area
#define POOL_F_NO_FAIL 0x00000004 // do not randomly fail
struct pool_cache_head {

View File

@ -275,6 +275,11 @@ static inline void *__pool_alloc(struct pool_head *pool, unsigned int flags)
{
void *p;
#ifdef DEBUG_FAIL_ALLOC
if (!(flags & POOL_F_NO_FAIL) && mem_should_fail(pool))
return NULL;
#endif
#ifdef CONFIG_HAP_POOLS
if (likely(p = pool_get_from_local_cache(pool)))
goto ret;

View File

@ -158,10 +158,6 @@ void *pool_alloc_nocache(struct pool_head *pool)
int limit = pool->limit;
void *ptr = NULL;
#ifdef DEBUG_FAIL_ALLOC
if (mem_should_fail(pool))
return NULL;
#endif
if (limit && allocated >= limit) {
activity[tid].pool_fail++;
return NULL;