Re: [PATCH 2/9] mempool: add error injection support

Eric Biggers
2025-11-07T03:30:41Z

On Fri, Oct 31, 2025 at 10:34:32AM +0100, Christoph Hellwig wrote:
> Add a call to should_fail_ex that forces mempool to actually allocate
> from the pool to stress the mempool implementation when enabled through
> debugfs. By default should_fail{,_ex} prints a very verbose stack trace
> that clutters the kernel log, slows down execution and triggers the
> kernel bug detection in xfstests. Pass FAULT_NOWARN and print a
> single-line message notating the caller instead so that full tests
> can be run with fault injection.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> mm/mempool.c | 24 +++++++++++++++++++-----
> 1 file changed, 19 insertions(+), 5 deletions(-)
>
> diff --git a/mm/mempool.c b/mm/mempool.c
> index d7c55a98c2be..15581179c8b9 100644
> --- a/mm/mempool.c
> +++ b/mm/mempool.c
> @@ -9,7 +9,7 @@
> * started by Ingo Molnar, Copyright (C) 2001
> * debugging by David Rientjes, Copyright (C) 2015
> */
> -
> +#include <linux/fault-inject.h>
> #include <linux/mm.h>
> #include <linux/slab.h>
> #include <linux/highmem.h>
> @@ -20,6 +20,15 @@
> #include <linux/writeback.h>
> #include "slab.h"
>
> +static DECLARE_FAULT_ATTR(fail_mempool_alloc);
> +
> +static int __init mempool_faul_inject_init(void)
> +{
> + return PTR_ERR_OR_ZERO(fault_create_debugfs_attr("fail_mempool_alloc",
> + NULL, &fail_mempool_alloc));
> +}
> +late_initcall(mempool_faul_inject_init);

Initcalls usually go at the bottom of the file.

> + if (should_fail_ex(&fail_mempool_alloc, 1, FAULT_NOWARN)) {

This doesn't build when CONFIG_FAULT_INJECTION=n.

- Eric