jbd2: Move jbd2-debug file to debugfs
The jbd2-debug file used to be located in /proc/sys/fs/jbd2-debug, but it incorrectly used create_proc_entry() instead of the sysctl routines, and no proc entry was ever created. Instead of fixing this we might as well move the jbd2-debug file to debugfs which would be the preferred location for this kind of tunable. The new location is now /sys/kernel/debug/jbd2/jbd2-debug. Signed-off-by: Jose R. Santos <jrs@us.ibm.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
committed by
Theodore Ts'o
parent
e23291b912
commit
0f49d5d019
10
fs/Kconfig
10
fs/Kconfig
@@ -251,7 +251,7 @@ config JBD2
|
|||||||
|
|
||||||
config JBD2_DEBUG
|
config JBD2_DEBUG
|
||||||
bool "JBD2 (ext4dev/ext4) debugging support"
|
bool "JBD2 (ext4dev/ext4) debugging support"
|
||||||
depends on JBD2
|
depends on JBD2 && DEBUG_FS
|
||||||
help
|
help
|
||||||
If you are using the ext4dev/ext4 journaled file system (or
|
If you are using the ext4dev/ext4 journaled file system (or
|
||||||
potentially any other filesystem/device using JBD2), this option
|
potentially any other filesystem/device using JBD2), this option
|
||||||
@@ -260,10 +260,10 @@ config JBD2_DEBUG
|
|||||||
By default, the debugging output will be turned off.
|
By default, the debugging output will be turned off.
|
||||||
|
|
||||||
If you select Y here, then you will be able to turn on debugging
|
If you select Y here, then you will be able to turn on debugging
|
||||||
with "echo N > /proc/sys/fs/jbd2-debug", where N is a number between
|
with "echo N > /sys/kernel/debug/jbd2/jbd2-debug", where N is a
|
||||||
1 and 5. The higher the number, the more debugging output is
|
number between 1 and 5. The higher the number, the more debugging
|
||||||
generated. To turn debugging off again, do
|
output is generated. To turn debugging off again, do
|
||||||
"echo 0 > /proc/sys/fs/jbd2-debug".
|
"echo 0 > /sys/kernel/debug/jbd2/jbd2-debug".
|
||||||
|
|
||||||
config FS_MBCACHE
|
config FS_MBCACHE
|
||||||
# Meta block cache for Extended Attributes (ext2/ext3/ext4)
|
# Meta block cache for Extended Attributes (ext2/ext3/ext4)
|
||||||
|
@@ -35,6 +35,7 @@
|
|||||||
#include <linux/kthread.h>
|
#include <linux/kthread.h>
|
||||||
#include <linux/poison.h>
|
#include <linux/poison.h>
|
||||||
#include <linux/proc_fs.h>
|
#include <linux/proc_fs.h>
|
||||||
|
#include <linux/debugfs.h>
|
||||||
|
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
@@ -1951,63 +1952,49 @@ void jbd2_journal_put_journal_head(struct journal_head *jh)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* /proc tunables
|
* debugfs tunables
|
||||||
*/
|
*/
|
||||||
#if defined(CONFIG_JBD2_DEBUG)
|
#if defined(CONFIG_JBD2_DEBUG)
|
||||||
int jbd2_journal_enable_debug;
|
u8 jbd2_journal_enable_debug;
|
||||||
EXPORT_SYMBOL(jbd2_journal_enable_debug);
|
EXPORT_SYMBOL(jbd2_journal_enable_debug);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_JBD2_DEBUG) && defined(CONFIG_PROC_FS)
|
#if defined(CONFIG_JBD2_DEBUG) && defined(CONFIG_DEBUG_FS)
|
||||||
|
|
||||||
static struct proc_dir_entry *proc_jbd_debug;
|
#define JBD2_DEBUG_NAME "jbd2-debug"
|
||||||
|
|
||||||
static int read_jbd_debug(char *page, char **start, off_t off,
|
struct dentry *jbd2_debugfs_dir, *jbd2_debug;
|
||||||
int count, int *eof, void *data)
|
|
||||||
|
static void __init jbd2_create_debugfs_entry(void)
|
||||||
{
|
{
|
||||||
int ret;
|
jbd2_debugfs_dir = debugfs_create_dir("jbd2", NULL);
|
||||||
|
if (jbd2_debugfs_dir)
|
||||||
ret = sprintf(page + off, "%d\n", jbd2_journal_enable_debug);
|
jbd2_debug = debugfs_create_u8(JBD2_DEBUG_NAME, S_IRUGO,
|
||||||
*eof = 1;
|
jbd2_debugfs_dir,
|
||||||
return ret;
|
&jbd2_journal_enable_debug);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int write_jbd_debug(struct file *file, const char __user *buffer,
|
static void __exit jbd2_remove_debugfs_entry(void)
|
||||||
unsigned long count, void *data)
|
|
||||||
{
|
{
|
||||||
char buf[32];
|
if (jbd2_debug)
|
||||||
|
debugfs_remove(jbd2_debug);
|
||||||
if (count > ARRAY_SIZE(buf) - 1)
|
if (jbd2_debugfs_dir)
|
||||||
count = ARRAY_SIZE(buf) - 1;
|
debugfs_remove(jbd2_debugfs_dir);
|
||||||
if (copy_from_user(buf, buffer, count))
|
|
||||||
return -EFAULT;
|
|
||||||
buf[ARRAY_SIZE(buf) - 1] = '\0';
|
|
||||||
jbd2_journal_enable_debug = simple_strtoul(buf, NULL, 10);
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define JBD_PROC_NAME "sys/fs/jbd2-debug"
|
|
||||||
|
|
||||||
static void __init create_jbd_proc_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 jbd2_remove_jbd_proc_entry(void)
|
|
||||||
{
|
|
||||||
if (proc_jbd_debug)
|
|
||||||
remove_proc_entry(JBD_PROC_NAME, NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#define create_jbd_proc_entry() do {} while (0)
|
static void __init jbd2_create_debugfs_entry(void)
|
||||||
#define jbd2_remove_jbd_proc_entry() do {} while (0)
|
{
|
||||||
|
do {
|
||||||
|
} while (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __exit jbd2_remove_debugfs_entry(void)
|
||||||
|
{
|
||||||
|
do {
|
||||||
|
} while (0);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -2067,7 +2054,7 @@ static int __init journal_init(void)
|
|||||||
ret = journal_init_caches();
|
ret = journal_init_caches();
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
jbd2_journal_destroy_caches();
|
jbd2_journal_destroy_caches();
|
||||||
create_jbd_proc_entry();
|
jbd2_create_debugfs_entry();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2078,7 +2065,7 @@ static void __exit journal_exit(void)
|
|||||||
if (n)
|
if (n)
|
||||||
printk(KERN_EMERG "JBD: leaked %d journal_heads!\n", n);
|
printk(KERN_EMERG "JBD: leaked %d journal_heads!\n", n);
|
||||||
#endif
|
#endif
|
||||||
jbd2_remove_jbd_proc_entry();
|
jbd2_remove_debugfs_entry();
|
||||||
jbd2_journal_destroy_caches();
|
jbd2_journal_destroy_caches();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -57,7 +57,7 @@
|
|||||||
* CONFIG_JBD2_DEBUG is on.
|
* CONFIG_JBD2_DEBUG is on.
|
||||||
*/
|
*/
|
||||||
#define JBD_EXPENSIVE_CHECKING
|
#define JBD_EXPENSIVE_CHECKING
|
||||||
extern int jbd2_journal_enable_debug;
|
extern u8 jbd2_journal_enable_debug;
|
||||||
|
|
||||||
#define jbd_debug(n, f, a...) \
|
#define jbd_debug(n, f, a...) \
|
||||||
do { \
|
do { \
|
||||||
|
Reference in New Issue
Block a user