diff options
Diffstat (limited to 'fs/btrfs/sysfs.c')
| -rw-r--r-- | fs/btrfs/sysfs.c | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c index 865f4cf9a769..c5eb2143dc66 100644 --- a/fs/btrfs/sysfs.c +++ b/fs/btrfs/sysfs.c | |||
| @@ -24,6 +24,7 @@ | |||
| 24 | #include <linux/kobject.h> | 24 | #include <linux/kobject.h> |
| 25 | #include <linux/bug.h> | 25 | #include <linux/bug.h> |
| 26 | #include <linux/genhd.h> | 26 | #include <linux/genhd.h> |
| 27 | #include <linux/debugfs.h> | ||
| 27 | 28 | ||
| 28 | #include "ctree.h" | 29 | #include "ctree.h" |
| 29 | #include "disk-io.h" | 30 | #include "disk-io.h" |
| @@ -599,6 +600,12 @@ static int add_device_membership(struct btrfs_fs_info *fs_info) | |||
| 599 | /* /sys/fs/btrfs/ entry */ | 600 | /* /sys/fs/btrfs/ entry */ |
| 600 | static struct kset *btrfs_kset; | 601 | static struct kset *btrfs_kset; |
| 601 | 602 | ||
| 603 | /* /sys/kernel/debug/btrfs */ | ||
| 604 | static struct dentry *btrfs_debugfs_root_dentry; | ||
| 605 | |||
| 606 | /* Debugging tunables and exported data */ | ||
| 607 | u64 btrfs_debugfs_test; | ||
| 608 | |||
| 602 | int btrfs_sysfs_add_one(struct btrfs_fs_info *fs_info) | 609 | int btrfs_sysfs_add_one(struct btrfs_fs_info *fs_info) |
| 603 | { | 610 | { |
| 604 | int error; | 611 | int error; |
| @@ -642,27 +649,41 @@ failure: | |||
| 642 | return error; | 649 | return error; |
| 643 | } | 650 | } |
| 644 | 651 | ||
| 652 | static int btrfs_init_debugfs(void) | ||
| 653 | { | ||
| 654 | #ifdef CONFIG_DEBUG_FS | ||
| 655 | btrfs_debugfs_root_dentry = debugfs_create_dir("btrfs", NULL); | ||
| 656 | if (!btrfs_debugfs_root_dentry) | ||
| 657 | return -ENOMEM; | ||
| 658 | |||
| 659 | debugfs_create_u64("test", S_IRUGO | S_IWUGO, btrfs_debugfs_root_dentry, | ||
| 660 | &btrfs_debugfs_test); | ||
| 661 | #endif | ||
| 662 | return 0; | ||
| 663 | } | ||
| 664 | |||
| 645 | int btrfs_init_sysfs(void) | 665 | int btrfs_init_sysfs(void) |
| 646 | { | 666 | { |
| 647 | int ret; | 667 | int ret; |
| 668 | |||
| 648 | btrfs_kset = kset_create_and_add("btrfs", NULL, fs_kobj); | 669 | btrfs_kset = kset_create_and_add("btrfs", NULL, fs_kobj); |
| 649 | if (!btrfs_kset) | 670 | if (!btrfs_kset) |
| 650 | return -ENOMEM; | 671 | return -ENOMEM; |
| 651 | 672 | ||
| 652 | init_feature_attrs(); | 673 | ret = btrfs_init_debugfs(); |
| 674 | if (ret) | ||
| 675 | return ret; | ||
| 653 | 676 | ||
| 677 | init_feature_attrs(); | ||
| 654 | ret = sysfs_create_group(&btrfs_kset->kobj, &btrfs_feature_attr_group); | 678 | ret = sysfs_create_group(&btrfs_kset->kobj, &btrfs_feature_attr_group); |
| 655 | if (ret) { | ||
| 656 | kset_unregister(btrfs_kset); | ||
| 657 | return ret; | ||
| 658 | } | ||
| 659 | 679 | ||
| 660 | return 0; | 680 | return ret; |
| 661 | } | 681 | } |
| 662 | 682 | ||
| 663 | void btrfs_exit_sysfs(void) | 683 | void btrfs_exit_sysfs(void) |
| 664 | { | 684 | { |
| 665 | sysfs_remove_group(&btrfs_kset->kobj, &btrfs_feature_attr_group); | 685 | sysfs_remove_group(&btrfs_kset->kobj, &btrfs_feature_attr_group); |
| 666 | kset_unregister(btrfs_kset); | 686 | kset_unregister(btrfs_kset); |
| 687 | debugfs_remove_recursive(btrfs_debugfs_root_dentry); | ||
| 667 | } | 688 | } |
| 668 | 689 | ||
