1 #include <linux/fault-inject.h>
4 struct fault_attr attr
;
6 #ifdef CONFIG_FAULT_INJECTION_DEBUG_FS
7 struct dentry
*ignore_gfp_wait_file
;
10 .attr
= FAULT_ATTR_INITIALIZER
,
14 bool should_failslab(size_t size
, gfp_t gfpflags
)
16 if (gfpflags
& __GFP_NOFAIL
)
19 if (failslab
.ignore_gfp_wait
&& (gfpflags
& __GFP_WAIT
))
22 return should_fail(&failslab
.attr
, size
);
25 static int __init
setup_failslab(char *str
)
27 return setup_fault_attr(&failslab
.attr
, str
);
29 __setup("failslab=", setup_failslab
);
31 #ifdef CONFIG_FAULT_INJECTION_DEBUG_FS
33 static int __init
failslab_debugfs_init(void)
35 mode_t mode
= S_IFREG
| S_IRUSR
| S_IWUSR
;
39 err
= init_fault_attr_dentries(&failslab
.attr
, "failslab");
42 dir
= failslab
.attr
.dentries
.dir
;
44 failslab
.ignore_gfp_wait_file
=
45 debugfs_create_bool("ignore-gfp-wait", mode
, dir
,
46 &failslab
.ignore_gfp_wait
);
48 if (!failslab
.ignore_gfp_wait_file
) {
50 debugfs_remove(failslab
.ignore_gfp_wait_file
);
51 cleanup_fault_attr_dentries(&failslab
.attr
);
57 late_initcall(failslab_debugfs_init
);
59 #endif /* CONFIG_FAULT_INJECTION_DEBUG_FS */