Fix scsi_add_device() for async scanning
PATCH 1/1 Fix scsi_add_device() for async scanning
I had thought that all drivers which didn't call scsi_scan_host() called scsi_scan_target(). Some, such as sbp2, mptsas and libata-scsi, call scsi_add_device() or __scsi_add_device(). We just need to wait for the currently executing async scans to complete first. This is the same code that's in scsi_scan_target(), except that we have to return an error instead of void when we're declining to scan at all.
Signed-off-by Matthew Wilcox <[email protected]>
drivers/scsi/scsi_scan.c +6 -0
@@ -1436,6 +1436,12 @@ struct scsi_device *__scsi_add_device(struct Scsi_Host *shost, uint channel,struct device *parent = &shost->shost_gendev;struct scsi_target *starget; +if (strncmp (scsi_scan_type,"none" ,4 ) ==0 ) +return ERR_PTR (-ENODEV ); + +if (!shost->async_scan) +scsi_complete_async_scans (); + starget =scsi_alloc_target (parent, channel, id);if (!starget)return ERR_PTR (-ENOMEM );