|
@@ -1251,9 +1251,12 @@ struct scsi_device *__scsi_add_device(struct Scsi_Host *shost, uint channel,
|
|
|
|
|
|
get_device(&starget->dev);
|
|
|
down(&shost->scan_mutex);
|
|
|
- res = scsi_probe_and_add_lun(starget, lun, NULL, &sdev, 1, hostdata);
|
|
|
- if (res != SCSI_SCAN_LUN_PRESENT)
|
|
|
- sdev = ERR_PTR(-ENODEV);
|
|
|
+ if (scsi_host_scan_allowed(shost)) {
|
|
|
+ res = scsi_probe_and_add_lun(starget, lun, NULL, &sdev, 1,
|
|
|
+ hostdata);
|
|
|
+ if (res != SCSI_SCAN_LUN_PRESENT)
|
|
|
+ sdev = ERR_PTR(-ENODEV);
|
|
|
+ }
|
|
|
up(&shost->scan_mutex);
|
|
|
scsi_target_reap(starget);
|
|
|
put_device(&starget->dev);
|
|
@@ -1403,11 +1406,15 @@ int scsi_scan_host_selected(struct Scsi_Host *shost, unsigned int channel,
|
|
|
return -EINVAL;
|
|
|
|
|
|
down(&shost->scan_mutex);
|
|
|
- if (channel == SCAN_WILD_CARD)
|
|
|
- for (channel = 0; channel <= shost->max_channel; channel++)
|
|
|
+ if (scsi_host_scan_allowed(shost)) {
|
|
|
+ if (channel == SCAN_WILD_CARD)
|
|
|
+ for (channel = 0; channel <= shost->max_channel;
|
|
|
+ channel++)
|
|
|
+ scsi_scan_channel(shost, channel, id, lun,
|
|
|
+ rescan);
|
|
|
+ else
|
|
|
scsi_scan_channel(shost, channel, id, lun, rescan);
|
|
|
- else
|
|
|
- scsi_scan_channel(shost, channel, id, lun, rescan);
|
|
|
+ }
|
|
|
up(&shost->scan_mutex);
|
|
|
|
|
|
return 0;
|