fault-injection: add min-order parameter to fail_page_alloc
Subsystems (4)
Akinobu Mita
maintainerPATCH 1/1 fault-injection: add min-order parameter to fail_page_alloc
Limiting smaller allocation failures by fault injection helps to find real possible bugs. Because higher order allocations are likely to fail and zero-order allocations are not likely to fail.
This patch adds min-order parameter to fail_page_alloc.
It specifies the minimum page allocation order to be injected failures.
Signed-off-by Akinobu Mita <[email protected]>
--- Documentation/fault-injection/fault-injection.txt | 5 +++++ mm/page_alloc.c | 12 +++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-)
mm/page_alloc.c +11 -1
@@ -1168,11 +1168,13 @@ static struct fail_page_alloc_attr {u32 ignore_gfp_highmem;u32 ignore_gfp_wait; +u32 min_order;#ifdef CONFIG_FAULT_INJECTION_DEBUG_FS struct dentry *ignore_gfp_highmem_file;struct dentry *ignore_gfp_wait_file; +struct dentry *min_order_file;#endif /* CONFIG_FAULT_INJECTION_DEBUG_FS */
@@ -1180,6 +1182,7 @@ static struct fail_page_alloc_attr { .attr = FAULT_ATTR_INITIALIZER, .ignore_gfp_wait = 1, .ignore_gfp_highmem = 1, + .min_order = 1, };static int __init setup_fail_page_alloc (char *str)
@@ -1190,6 +1193,8 @@ __setup("fail_page_alloc=", setup_fail_pstatic int should_fail_alloc_page (gfp_t gfp_mask,unsigned int order) { +if (order < fail_page_alloc.min_order) +return 0 ;if (gfp_mask & __GFP_NOFAIL)return 0 ;if (fail_page_alloc.ignore_gfp_highmem && (gfp_mask & __GFP_HIGHMEM))
@@ -1221,12 +1226,17 @@ static int __init fail_page_alloc_debugf fail_page_alloc.ignore_gfp_highmem_file =debugfs_create_bool ("ignore-gfp-highmem" , mode, dir, &fail_page_alloc.ignore_gfp_highmem); + fail_page_alloc.min_order_file = +debugfs_create_u32 ("min-order" , mode, dir, + &fail_page_alloc.min_order);if (!fail_page_alloc.ignore_gfp_wait_file || - !fail_page_alloc.ignore_gfp_highmem_file) { + !fail_page_alloc.ignore_gfp_highmem_file || + !fail_page_alloc.min_order_file) { err = -ENOMEM ;debugfs_remove (fail_page_alloc.ignore_gfp_wait_file);debugfs_remove (fail_page_alloc.ignore_gfp_highmem_file); +debugfs_remove (fail_page_alloc.min_order_file);cleanup_fault_attr_dentries (&fail_page_alloc.attr); }
Documentation/fault-injection/fault-injection.txt +5 -0
@@ -103,6 +103,11 @@ configuration of fault-injection capabil default is 'N', setting it to 'Y' will inject failures only into non-sleep allocations (GFP_ATOMIC allocations). +- /debug/fail_page_alloc/min-order: + + specifies the minimum page allocation order to be injected + failures. + o Boot option In order to inject faults while debugfs is not available (early boot time),