[SCSI] Add Kconfig option for asynchronous SCSI scanning
authorMatthew Wilcox <matthew@wil.cx>
Wed, 22 Nov 2006 20:24:52 +0000 (13:24 -0700)
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>
Wed, 22 Nov 2006 22:41:09 +0000 (16:41 -0600)
Without this patch, the user has to add a kernel command line parameter
to get asynchronous SCSI scanning.  Now they can select the default at
compile time and still override it at boot time if they need to.

Signed-off-by: Matthew Wilcox <matthew@wil.cx>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/Kconfig
drivers/scsi/scsi_scan.c

index 5881464a938d9f5a7229bd39ce9772f013cb10ed..8442be1bb16271fbb7f484315e814fe3a6e05338 100644 (file)
@@ -216,6 +216,23 @@ config SCSI_LOGGING
          there should be no noticeable performance impact as long as you have
          logging turned off.
 
+config SCSI_SCAN_ASYNC
+       bool "Asynchronous SCSI scanning"
+       depends on SCSI
+       help
+         The SCSI subsystem can probe for devices while the rest of the
+         system continues booting, and even probe devices on different
+         busses in parallel, leading to a significant speed-up.
+         If you have built SCSI as modules, enabling this option can
+         be a problem as the devices may not have been found by the
+         time your system expects them to have been.  You can load the
+         scsi_wait_scan module to ensure that all scans have completed.
+         If you build your SCSI drivers into the kernel, then everything
+         will work fine if you say Y here.
+
+         You can override this choice by specifying scsi_mod.scan="sync"
+         or "async" on the kernel's command line.
+
 menu "SCSI Transports"
        depends on SCSI
 
index aa1b1e0e9d22d7b394dd085f66dd2a8302c36e8b..d91d268dd331d0eb8ecea5e0423406a96f8a2439 100644 (file)
@@ -89,7 +89,13 @@ module_param_named(max_luns, max_scsi_luns, int, S_IRUGO|S_IWUSR);
 MODULE_PARM_DESC(max_luns,
                 "last scsi LUN (should be between 1 and 2^32-1)");
 
-static char scsi_scan_type[6] = "sync";
+#ifdef CONFIG_SCSI_SCAN_ASYNC
+#define SCSI_SCAN_TYPE_DEFAULT "async"
+#else
+#define SCSI_SCAN_TYPE_DEFAULT "sync"
+#endif
+
+static char scsi_scan_type[6] = SCSI_SCAN_TYPE_DEFAULT;
 
 module_param_string(scan, scsi_scan_type, sizeof(scsi_scan_type), S_IRUGO);
 MODULE_PARM_DESC(scan, "sync, async or none");