Skip to content

Commit

Permalink
fail_page_alloc: simplify debugfs initialization
Browse files Browse the repository at this point in the history
Now cleanup_fault_attr_dentries() recursively removes a directory, So we
can simplify the error handling in the initialization code and no need
to hold dentry structs for each debugfs file.

Signed-off-by: Akinobu Mita <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
mita authored and torvalds committed Jul 26, 2011
1 parent 810f09b commit b2588c4
Showing 1 changed file with 16 additions and 31 deletions.
47 changes: 16 additions & 31 deletions mm/page_alloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1370,21 +1370,12 @@ struct page *buffered_rmqueue(struct zone *preferred_zone,

#ifdef CONFIG_FAIL_PAGE_ALLOC

static struct fail_page_alloc_attr {
static struct {
struct fault_attr 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 */

} fail_page_alloc = {
.attr = FAULT_ATTR_INITIALIZER,
.ignore_gfp_wait = 1,
Expand Down Expand Up @@ -1424,30 +1415,24 @@ static int __init fail_page_alloc_debugfs(void)
"fail_page_alloc");
if (err)
return err;

dir = fail_page_alloc.attr.dir;

fail_page_alloc.ignore_gfp_wait_file =
debugfs_create_bool("ignore-gfp-wait", mode, dir,
&fail_page_alloc.ignore_gfp_wait);

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.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);
}
if (!debugfs_create_bool("ignore-gfp-wait", mode, dir,
&fail_page_alloc.ignore_gfp_wait))
goto fail;
if (!debugfs_create_bool("ignore-gfp-highmem", mode, dir,
&fail_page_alloc.ignore_gfp_highmem))
goto fail;
if (!debugfs_create_u32("min-order", mode, dir,
&fail_page_alloc.min_order))
goto fail;

return 0;
fail:
cleanup_fault_attr_dentries(&fail_page_alloc.attr);

return err;
return -ENOMEM;
}

late_initcall(fail_page_alloc_debugfs);
Expand Down

0 comments on commit b2588c4

Please sign in to comment.