aoe: create and destroy debugfs directory for aoe
authorEd Cashin <ecashin@coraid.com>
Wed, 11 Sep 2013 21:25:39 +0000 (14:25 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 11 Sep 2013 22:59:22 +0000 (15:59 -0700)
This series adds the debugging information that the coraid.com-distributed
aoe driver exports via sysfs, but instead of sysfs, it uses debugfs.

With these patches applied, even without AoE targets on the network, KEDR
reports new possible memory leaks, but these are from callers outside the
aoe driver that have used aoe_devnode to get the name of the character
devices through the aoe_class->devnode callback, and I believe they're
responsible for freeing that memory.

This patch:

Create and destroy the debugfs directory.

Signed-off-by: Ed Cashin <ecashin@coraid.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/block/aoe/aoeblk.c

index 916d9ed5c8aa6d1f1ae3873a924f056015cd651c..cb508b75437774e73bd243374926a9cb9a5cafcd 100644 (file)
 #include <linux/mutex.h>
 #include <linux/export.h>
 #include <linux/moduleparam.h>
+#include <linux/debugfs.h>
 #include <scsi/sg.h>
 #include "aoe.h"
 
 static DEFINE_MUTEX(aoeblk_mutex);
 static struct kmem_cache *buf_pool_cache;
+static struct dentry *aoe_debugfs_dir;
 
 /* GPFS needs a larger value than the default. */
 static int aoe_maxsectors;
@@ -351,6 +353,8 @@ err:
 void
 aoeblk_exit(void)
 {
+       debugfs_remove_recursive(aoe_debugfs_dir);
+       aoe_debugfs_dir = NULL;
        kmem_cache_destroy(buf_pool_cache);
 }
 
@@ -362,7 +366,11 @@ aoeblk_init(void)
                                           0, 0, NULL);
        if (buf_pool_cache == NULL)
                return -ENOMEM;
-
+       aoe_debugfs_dir = debugfs_create_dir("aoe", NULL);
+       if (IS_ERR_OR_NULL(aoe_debugfs_dir)) {
+               pr_info("aoe: cannot create debugfs directory\n");
+               aoe_debugfs_dir = NULL;
+       }
        return 0;
 }