diff options
-rw-r--r-- | fs/gfs2/glock.c | 47 |
1 files changed, 28 insertions, 19 deletions
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c index f42dffba056a..0fa8062f85a7 100644 --- a/fs/gfs2/glock.c +++ b/fs/gfs2/glock.c | |||
@@ -2047,34 +2047,41 @@ static const struct file_operations gfs2_sbstats_fops = { | |||
2047 | 2047 | ||
2048 | int gfs2_create_debugfs_file(struct gfs2_sbd *sdp) | 2048 | int gfs2_create_debugfs_file(struct gfs2_sbd *sdp) |
2049 | { | 2049 | { |
2050 | sdp->debugfs_dir = debugfs_create_dir(sdp->sd_table_name, gfs2_root); | 2050 | struct dentry *dent; |
2051 | if (!sdp->debugfs_dir) | 2051 | |
2052 | return -ENOMEM; | 2052 | dent = debugfs_create_dir(sdp->sd_table_name, gfs2_root); |
2053 | sdp->debugfs_dentry_glocks = debugfs_create_file("glocks", | 2053 | if (IS_ERR_OR_NULL(dent)) |
2054 | S_IFREG | S_IRUGO, | 2054 | goto fail; |
2055 | sdp->debugfs_dir, sdp, | 2055 | sdp->debugfs_dir = dent; |
2056 | &gfs2_glocks_fops); | 2056 | |
2057 | if (!sdp->debugfs_dentry_glocks) | 2057 | dent = debugfs_create_file("glocks", |
2058 | S_IFREG | S_IRUGO, | ||
2059 | sdp->debugfs_dir, sdp, | ||
2060 | &gfs2_glocks_fops); | ||
2061 | if (IS_ERR_OR_NULL(dent)) | ||
2058 | goto fail; | 2062 | goto fail; |
2063 | sdp->debugfs_dentry_glocks = dent; | ||
2059 | 2064 | ||
2060 | sdp->debugfs_dentry_glstats = debugfs_create_file("glstats", | 2065 | dent = debugfs_create_file("glstats", |
2061 | S_IFREG | S_IRUGO, | 2066 | S_IFREG | S_IRUGO, |
2062 | sdp->debugfs_dir, sdp, | 2067 | sdp->debugfs_dir, sdp, |
2063 | &gfs2_glstats_fops); | 2068 | &gfs2_glstats_fops); |
2064 | if (!sdp->debugfs_dentry_glstats) | 2069 | if (IS_ERR_OR_NULL(dent)) |
2065 | goto fail; | 2070 | goto fail; |
2071 | sdp->debugfs_dentry_glstats = dent; | ||
2066 | 2072 | ||
2067 | sdp->debugfs_dentry_sbstats = debugfs_create_file("sbstats", | 2073 | dent = debugfs_create_file("sbstats", |
2068 | S_IFREG | S_IRUGO, | 2074 | S_IFREG | S_IRUGO, |
2069 | sdp->debugfs_dir, sdp, | 2075 | sdp->debugfs_dir, sdp, |
2070 | &gfs2_sbstats_fops); | 2076 | &gfs2_sbstats_fops); |
2071 | if (!sdp->debugfs_dentry_sbstats) | 2077 | if (IS_ERR_OR_NULL(dent)) |
2072 | goto fail; | 2078 | goto fail; |
2079 | sdp->debugfs_dentry_sbstats = dent; | ||
2073 | 2080 | ||
2074 | return 0; | 2081 | return 0; |
2075 | fail: | 2082 | fail: |
2076 | gfs2_delete_debugfs_file(sdp); | 2083 | gfs2_delete_debugfs_file(sdp); |
2077 | return -ENOMEM; | 2084 | return dent ? PTR_ERR(dent) : -ENOMEM; |
2078 | } | 2085 | } |
2079 | 2086 | ||
2080 | void gfs2_delete_debugfs_file(struct gfs2_sbd *sdp) | 2087 | void gfs2_delete_debugfs_file(struct gfs2_sbd *sdp) |
@@ -2100,6 +2107,8 @@ void gfs2_delete_debugfs_file(struct gfs2_sbd *sdp) | |||
2100 | int gfs2_register_debugfs(void) | 2107 | int gfs2_register_debugfs(void) |
2101 | { | 2108 | { |
2102 | gfs2_root = debugfs_create_dir("gfs2", NULL); | 2109 | gfs2_root = debugfs_create_dir("gfs2", NULL); |
2110 | if (IS_ERR(gfs2_root)) | ||
2111 | return PTR_ERR(gfs2_root); | ||
2103 | return gfs2_root ? 0 : -ENOMEM; | 2112 | return gfs2_root ? 0 : -ENOMEM; |
2104 | } | 2113 | } |
2105 | 2114 | ||