aboutsummaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
authorAndi Kleen <ak@linux.intel.com>2010-09-08 10:54:17 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2010-10-22 13:16:43 -0400
commite52eec13cd6b7f30ab19081b387813e03e592ae5 (patch)
tree7b327e0b9283c578fb10922edcf6e10b3b8fd943 /init
parent39aba963d937edb20db7d9d93e6dda5d2adfdcdd (diff)
SYSFS: Allow boot time switching between deprecated and modern sysfs layout
I have some systems which need legacy sysfs due to old tools that are making assumptions that a directory can never be a symlink to another directory, and it's a big hazzle to compile separate kernels for them. This patch turns CONFIG_SYSFS_DEPRECATED into a run time option that can be switched on/off the kernel command line. This way the same binary can be used in both cases with just a option on the command line. The old CONFIG_SYSFS_DEPRECATED_V2 option is still there to set the default. I kept the weird name to not break existing config files. Also the compat code can be still completely disabled by undefining CONFIG_SYSFS_DEPRECATED_SWITCH -- just the optimizer takes care of this now instead of lots of ifdefs. This makes the code look nicer. v2: This is an updated version on top of Kay's patch to only handle the block devices. I tested it on my old systems and that seems to work. Cc: axboe@kernel.dk Signed-off-by: Andi Kleen <ak@linux.intel.com> Cc: Kay Sievers <kay.sievers@vrfy.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'init')
-rw-r--r--init/Kconfig26
1 files changed, 22 insertions, 4 deletions
diff --git a/init/Kconfig b/init/Kconfig
index 137609f33ebc..d742b6fca8d2 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -660,8 +660,12 @@ config SYSFS_DEPRECATED
660 depends on SYSFS 660 depends on SYSFS
661 default n 661 default n
662 help 662 help
663 This option switches the layout of the "block" class devices, to not 663 This option adds code that switches the layout of the "block" class
664 show up in /sys/class/block/, but only in /sys/block/. 664 devices, to not show up in /sys/class/block/, but only in
665 /sys/block/.
666
667 This switch is only active when the sysfs.deprecated=1 boot option is
668 passed or the SYSFS_DEPRECATED_V2 option is set.
665 669
666 This option allows new kernels to run on old distributions and tools, 670 This option allows new kernels to run on old distributions and tools,
667 which might get confused by /sys/class/block/. Since 2007/2008 all 671 which might get confused by /sys/class/block/. Since 2007/2008 all
@@ -672,8 +676,22 @@ config SYSFS_DEPRECATED
672 option enabled. 676 option enabled.
673 677
674 Only if you are using a new kernel on an old distribution, you might 678 Only if you are using a new kernel on an old distribution, you might
675 need to say Y here. Never say Y, if the original kernel, that came 679 need to say Y here.
676 with your distribution, has not set this option. 680
681config SYSFS_DEPRECATED_V2
682 bool "enabled deprecated sysfs features by default"
683 default n
684 depends on SYSFS
685 depends on SYSFS_DEPRECATED
686 help
687 Enable deprecated sysfs by default.
688
689 See the CONFIG_SYSFS_DEPRECATED option for more details about this
690 option.
691
692 Only if you are using a new kernel on an old distribution, you might
693 need to say Y here. Even then, odds are you would not need it
694 enabled, you can always pass the boot option if absolutely necessary.
677 695
678config RELAY 696config RELAY
679 bool "Kernel->user space relay support (formerly relayfs)" 697 bool "Kernel->user space relay support (formerly relayfs)"