Skip to content

Commit

Permalink
raid: make RAID autodetect default a KConfig option
Browse files Browse the repository at this point in the history
RAID autodetect has the side effect of requiring synchronisation
of all device drivers, which can make the boot several seconds longer
(I've measured 7 on one of my laptops).... even for systems that don't
have RAID setup for the root filesystem (the only FS where this matters).

This patch makes the default for autodetect a config option; either way
the user can always override via the kernel command line.

Signed-off-by: Arjan van de Ven <[email protected]>
Acked-by: NeilBrown <[email protected]>
  • Loading branch information
fenrus75 committed Oct 12, 2008
1 parent 82cbc11 commit a364092
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 2 deletions.
14 changes: 14 additions & 0 deletions drivers/md/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,20 @@ config BLK_DEV_MD

If unsure, say N.

config MD_AUTODETECT
bool "Autodetect RAID arrays during kernel boot"
depends on BLK_DEV_MD
default y
---help---
If you say Y here, then the kernel will try to autodetect raid
arrays as part of its boot process.

If you don't use raid and say Y, this autodetection can cause
a several-second delay in the boot time due to various
synchronisation steps that are part of this step.

If unsure, say Y.

config MD_LINEAR
tristate "Linear (append) mode"
depends on BLK_DEV_MD
Expand Down
11 changes: 9 additions & 2 deletions init/do_mounts_md.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,12 @@
* The code for that is here.
*/

static int __initdata raid_noautodetect, raid_autopart;
#ifdef CONFIG_MD_AUTODETECT
static int __initdata raid_noautodetect;
#else
static int __initdata raid_noautodetect=1;
#endif
static int __initdata raid_autopart;

static struct {
int minor;
Expand Down Expand Up @@ -252,6 +257,8 @@ static int __init raid_setup(char *str)

if (!strncmp(str, "noautodetect", wlen))
raid_noautodetect = 1;
if (!strncmp(str, "autodetect", wlen))
raid_noautodetect = 0;
if (strncmp(str, "partitionable", wlen)==0)
raid_autopart = 1;
if (strncmp(str, "part", wlen)==0)
Expand Down Expand Up @@ -288,7 +295,7 @@ void __init md_run_setup(void)
create_dev("/dev/md0", MKDEV(MD_MAJOR, 0));

if (raid_noautodetect)
printk(KERN_INFO "md: Skipping autodetection of RAID arrays. (raid=noautodetect)\n");
printk(KERN_INFO "md: Skipping autodetection of RAID arrays. (raid=autodetect will force)\n");
else
autodetect_raid();
md_setup_drive();
Expand Down

0 comments on commit a364092

Please sign in to comment.