On Tue, Mar 15, 2016 at 08:19:42AM +0100, Hannes Reinecke wrote:
> On larger installations it is useful to disable automatic LUN
> scanning, and only add the required LUNs via udev rules.
> This can speed up bootup dramatically.
> 
> This patch introduces a new scan module parameter value 'manual',
> which works like 'none', but can be overriden by setting the 'rescan'
> value from scsi_scan_target to 'SCSI_SCAN_MANUAL'.
> And it updates all relevant callers to set the 'rescan' value
> to 'SCSI_SCAN_MANUAL' if invoked via the 'scan' option in sysfs.
> 
> Signed-off-by: Hannes Reinecke <[email protected]>
> ---
>  drivers/scsi/scsi_scan.c            | 25 ++++++++++++++++++-------
>  drivers/scsi/scsi_sysfs.c           |  3 ++-
>  drivers/scsi/scsi_transport_fc.c    |  3 ++-
>  drivers/scsi/scsi_transport_iscsi.c |  2 +-
>  drivers/scsi/scsi_transport_sas.c   |  4 ++--
>  include/scsi/scsi_device.h          |  6 ++++++
>  6 files changed, 31 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
> index 97074c9..54dc517 100644
> --- a/drivers/scsi/scsi_scan.c
> +++ b/drivers/scsi/scsi_scan.c
> @@ -96,10 +96,13 @@ MODULE_PARM_DESC(max_luns,
>  #define SCSI_SCAN_TYPE_DEFAULT "sync"
>  #endif
>  
> -char scsi_scan_type[6] = SCSI_SCAN_TYPE_DEFAULT;
> +char scsi_scan_type[7] = 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");
> +module_param_string(scan, scsi_scan_type, sizeof(scsi_scan_type),
> +                 S_IRUGO|S_IWUSR);
> +MODULE_PARM_DESC(scan, "sync, async, manual, or none. "
> +              "Setting to 'manual' disables automatic scanning, but allows "
> +              "for manual device scan via the 'scan' sysfs attribute.");
>  
>  static unsigned int scsi_inq_timeout = SCSI_TIMEOUT/HZ + 18;
>  
> @@ -1040,7 +1043,8 @@ static unsigned char *scsi_inq_str(unsigned char *buf, 
> unsigned char *inq,
>   * @lun:     LUN of target device
>   * @bflagsp: store bflags here if not NULL
>   * @sdevp:   probe the LUN corresponding to this scsi_device
> - * @rescan:     if nonzero skip some code only needed on first scan
> + * @rescan:     if greater than SCSI_SCAN_NONE skip some code only
> + *              needed on first scan

please pass the actual enum to all the functions taking this
recan argument so that we can do proper type checking on it.

> +             if (rescan > SCSI_SCAN_NONE || !scsi_device_created(sdev)) {

And always check just check for equality instead of doing BT / LT on
enum values.

>  
> +enum scsi_scan_mode {
> +     SCSI_SCAN_NONE = 0,

and this could use a better name.  SCSI_SCAN_INITAL maybe?
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to