|
@@ -35,6 +35,7 @@
|
|
|
#include <linux/kthread.h>
|
|
|
#include <linux/poison.h>
|
|
|
#include <linux/proc_fs.h>
|
|
|
+#include <linux/debugfs.h>
|
|
|
|
|
|
#include <asm/uaccess.h>
|
|
|
#include <asm/page.h>
|
|
@@ -1851,64 +1852,41 @@ void journal_put_journal_head(struct journal_head *jh)
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
- * /proc tunables
|
|
|
+ * debugfs tunables
|
|
|
*/
|
|
|
-#if defined(CONFIG_JBD_DEBUG)
|
|
|
-int journal_enable_debug;
|
|
|
-EXPORT_SYMBOL(journal_enable_debug);
|
|
|
-#endif
|
|
|
+#ifdef CONFIG_JBD_DEBUG
|
|
|
|
|
|
-#if defined(CONFIG_JBD_DEBUG) && defined(CONFIG_PROC_FS)
|
|
|
+u8 journal_enable_debug __read_mostly;
|
|
|
+EXPORT_SYMBOL(journal_enable_debug);
|
|
|
|
|
|
-static struct proc_dir_entry *proc_jbd_debug;
|
|
|
+static struct dentry *jbd_debugfs_dir;
|
|
|
+static struct dentry *jbd_debug;
|
|
|
|
|
|
-static int read_jbd_debug(char *page, char **start, off_t off,
|
|
|
- int count, int *eof, void *data)
|
|
|
+static void __init jbd_create_debugfs_entry(void)
|
|
|
{
|
|
|
- int ret;
|
|
|
-
|
|
|
- ret = sprintf(page + off, "%d\n", journal_enable_debug);
|
|
|
- *eof = 1;
|
|
|
- return ret;
|
|
|
+ jbd_debugfs_dir = debugfs_create_dir("jbd", NULL);
|
|
|
+ if (jbd_debugfs_dir)
|
|
|
+ jbd_debug = debugfs_create_u8("jbd-debug", S_IRUGO,
|
|
|
+ jbd_debugfs_dir,
|
|
|
+ &journal_enable_debug);
|
|
|
}
|
|
|
|
|
|
-static int write_jbd_debug(struct file *file, const char __user *buffer,
|
|
|
- unsigned long count, void *data)
|
|
|
+static void __exit jbd_remove_debugfs_entry(void)
|
|
|
{
|
|
|
- char buf[32];
|
|
|
-
|
|
|
- if (count > ARRAY_SIZE(buf) - 1)
|
|
|
- count = ARRAY_SIZE(buf) - 1;
|
|
|
- if (copy_from_user(buf, buffer, count))
|
|
|
- return -EFAULT;
|
|
|
- buf[ARRAY_SIZE(buf) - 1] = '\0';
|
|
|
- journal_enable_debug = simple_strtoul(buf, NULL, 10);
|
|
|
- return count;
|
|
|
+ debugfs_remove(jbd_debug);
|
|
|
+ debugfs_remove(jbd_debugfs_dir);
|
|
|
}
|
|
|
|
|
|
-#define JBD_PROC_NAME "sys/fs/jbd-debug"
|
|
|
+#else
|
|
|
|
|
|
-static void __init create_jbd_proc_entry(void)
|
|
|
+static inline void jbd_create_debugfs_entry(void)
|
|
|
{
|
|
|
- proc_jbd_debug = create_proc_entry(JBD_PROC_NAME, 0644, NULL);
|
|
|
- if (proc_jbd_debug) {
|
|
|
- /* Why is this so hard? */
|
|
|
- proc_jbd_debug->read_proc = read_jbd_debug;
|
|
|
- proc_jbd_debug->write_proc = write_jbd_debug;
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
-static void __exit remove_jbd_proc_entry(void)
|
|
|
+static inline void jbd_remove_debugfs_entry(void)
|
|
|
{
|
|
|
- if (proc_jbd_debug)
|
|
|
- remove_proc_entry(JBD_PROC_NAME, NULL);
|
|
|
}
|
|
|
|
|
|
-#else
|
|
|
-
|
|
|
-#define create_jbd_proc_entry() do {} while (0)
|
|
|
-#define remove_jbd_proc_entry() do {} while (0)
|
|
|
-
|
|
|
#endif
|
|
|
|
|
|
struct kmem_cache *jbd_handle_cache;
|
|
@@ -1965,7 +1943,7 @@ static int __init journal_init(void)
|
|
|
ret = journal_init_caches();
|
|
|
if (ret != 0)
|
|
|
journal_destroy_caches();
|
|
|
- create_jbd_proc_entry();
|
|
|
+ jbd_create_debugfs_entry();
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
@@ -1976,7 +1954,7 @@ static void __exit journal_exit(void)
|
|
|
if (n)
|
|
|
printk(KERN_EMERG "JBD: leaked %d journal_heads!\n", n);
|
|
|
#endif
|
|
|
- remove_jbd_proc_entry();
|
|
|
+ jbd_remove_debugfs_entry();
|
|
|
journal_destroy_caches();
|
|
|
}
|
|
|
|