On Mon, Oct 01, 2007 at 11:46:51AM -0400, bo yang wrote: > +/* > + * Fast driver load option, skip scanning for physical devices during > + * load. This would result in physical devices being skipped during > + * driver load time. These can be later added though, > + * using /proc/scsi/scsi > + */ /proc/scsi/scsi is deprecated, so please don't recommend it here. The proper way is the scan attribute of the scsi host. > +static unsigned int fast_load; > +module_param_named(fast_load, fast_load, int, 0); > +MODULE_PARM_DESC(fast_load, > + "megasas: Faster loading of the driver, skips physical devices! "\ > + "(default = 0)"); This should show up in sysfs. > +static struct megasas_instance *megasas_lookup_instance(u16 host_no) > +{ > + int i; > + > + for (i = 0; i < megasas_mgmt_info.max_index; i++) { > + if ((megasas_mgmt_info.instance[i]) && > + (megasas_mgmt_info.instance[i]->host->host_no > + == host_no)) no need for the braces here. This should be: if (megasas_mgmt_info.instance[i] && megasas_mgmt_info.instance[i]->host->host_no == host_no) > +static int megasas_slave_alloc(struct scsi_device *sdev) > +{ > + struct megasas_instance *instance; > + int tmp_fastload = fast_load; > + > + instance = megasas_lookup_instance(sdev->host->host_no); > + > + if (tmp_fastload && sdev->channel < MEGASAS_MAX_PD_CHANNELS) { > + if ((sdev->id == MEGASAS_MAX_DEV_PER_CHANNEL -1) && > + (sdev->channel == MEGASAS_MAX_PD_CHANNELS - 1)) { > + > + /* > + * If fast load option was set and scan for last device is > + * over, reset the fast_load flag so that during a possible > + * next scan, devices can be made available > + */ > + fast_load = 0; > + } > + return -ENXIO; > + } > + > + return 0; > +} This is a rather complicated and fragile way to implement this feature. I'd recomment to change the call to scsi_scan_host in megasas_io_attach to something like: if (fast_load) { int channel; for (channel = 0; channel < MEGASAS_MAX_PD_CHANNELS; channel++) { scsi_scan_host_selected(host, channel, SCAN_WILD_CARD, SCAN_WILD_CARD, 0); } } else { scsi_scan_host(host); } - To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html